Форум русскоязычного сообщества Ubuntu


Автор Тема: скрипт с netcat в автозагрузке  (Прочитано 1811 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн RustemNur

  • Автор темы
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
скрипт с netcat в автозагрузке
« : 20 Марта 2017, 09:25:45 »
Добрый день
Вопрос скорее всего не про оборудование, но все же...
Имею весы с com-портом, подключенные через девайс COM - LAN.
Читаю из него данные простеньким скриптом:
#!/bin/bash
nc -l 8080 | while read line
do
...
done

Читаю, если скрипт запускаю вручную в командной строки.

Если пишу в /etc/rc.local типа такого:

/root/weightmeter &

- процесс не запускается: ps -A | grep weightmeter ничего не возвращает.
Более того, если я пытаюсь запустить это скрипт из другого скрипта уже после загрузки, процесс также не запускается.
Если я внутри цикла while пишу что-то такое:
echo "qu-qu" >> qu
то файл qu также не создается, если скрипт запущен не явно, а из другого скрипта.

До этого весы были присоединены через девайс COM - USB, и читались точно таким же файлом, только вместо команды netcat использовалась cat /dev/ttyUSB0 - скрипт спокойно стартовал при загрузке. А вот теперь с netcat-ом никак.

Заранее благодарен.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: скрипт с netcat в автозагрузке
« Ответ #1 : 20 Марта 2017, 10:40:23 »
Цитировать
/root/weightmeter &
надо смотреть ошибка ли.
/root/weightmeter 2>/tmp/error.log &



Wars ~.o

Оффлайн RustemNur

  • Автор темы
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Re: скрипт с netcat в автозагрузке
« Ответ #2 : 20 Марта 2017, 13:11:07 »
Виктор, ошибок нет, файл нулевой длины.

Вот еще что нарыл:
если запускаю этот скрипт на машине, куда весы не коннектятся, то слушающий процесс создается.
Если же скрипт запускаю (пытаюсь запустить) на машине, на коннект с которой настроена железка COM - LAN, то процесс в памяти отсутствует.

И еще раз хочу напомнить: если скрипт запустить напрямую, не через какой-либо скрипт типа rc.local, или любой свой, то процесс создается, и данные с весов читаются.

_____

"
если запускаю этот скрипт на машине, куда весы не коннектятся, то слушающий процесс создается.
Если же скрипт запускаю (пытаюсь запустить) на машине, на коннект с которой настроена железка COM - LAN, то процесс в памяти отсутствует.
"

Я чуть неточно тут выразился: этот эксперимент делаю на одной и той же машине, изменяю только настройки железки (куда ей коннектиться). Так что дело именно в том, коннектится ли извне кто-то к машине со скриптом, или нет.

« Последнее редактирование: 20 Марта 2017, 13:39:34 от RustemNur »

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: скрипт с netcat в автозагрузке
« Ответ #3 : 20 Марта 2017, 17:59:57 »
Скрипт:
which nc
nc -l 8080 | line

В /etc/rc.local:
script -a -f -c "bash /путь/до/скрипта" "/путь/до/лога_скрипта" &
После запуска смотри лог скрипта.

Оффлайн RustemNur

  • Автор темы
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Re: скрипт с netcat в автозагрузке
« Ответ #4 : 20 Марта 2017, 18:21:36 »
renzrv,
Скрипт запущен Пн 20 мар 2017 20:18:27
/bin/nc


Скрипт выполнен Пн 20 мар 2017 20:18:27

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: скрипт с netcat в автозагрузке
« Ответ #5 : 20 Марта 2017, 18:28:27 »
nc -l 8080 | lineПустые строки?

Если:
nc -l 8080 | head -n50?

Оффлайн RustemNur

  • Автор темы
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Re: скрипт с netcat в автозагрузке
« Ответ #6 : 20 Марта 2017, 18:36:12 »

nc -l 8080 | head -n50
?

Ничего. Все та же одна пустая строка.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: скрипт с netcat в автозагрузке
« Ответ #7 : 20 Марта 2017, 18:41:24 »
как клиент?
Wars ~.o

Оффлайн RustemNur

  • Автор темы
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Re: скрипт с netcat в автозагрузке
« Ответ #8 : 20 Марта 2017, 18:46:06 »
victor00000,
Железка с весами настроена клиентом, комп со скриптом - сервер. Т.е. железяка при каждом срабатывании пишет в секет свою строчку с весом и некоторыми другими признаками, а скрипт пишет их таблицу mySQL.
Это работало в варианте с отправкой веса в com-порт, и работает, но не стартует в варианте с nc.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: скрипт с netcat в автозагрузке
« Ответ #9 : 20 Марта 2017, 18:59:38 »
это переход сервер?
#!/bin/bash
while true
do
nc -l 8080 | while read line
do
...
done
done
Wars ~.o

Оффлайн RustemNur

  • Автор темы
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Re: скрипт с netcat в автозагрузке
« Ответ #10 : 20 Марта 2017, 19:43:54 »
Цитировать
while true
do ...
Удивительно, но этот вариант из серии "масло маслянное" неожиданно оказался, кажется, рабочим.
Завтра на работе проверю до конца.

Виктор, спасибо!

Тем не менее, какого хрена оно именно так работает... Запущенное напрямую (не из другого скрипта), оно никогда не выходит из чтения сокета, что как бэ и ожидается от netcat-а в режиме ожидания (nc -l).

 

Страница сгенерирована за 0.028 секунд. Запросов: 25.