Часом виникає необхідність мати доступ до керованого обладнання ззовні мережі, і як в відомому анекдоті маємо на те 2 шляхи (жартую, звісно ж більше). Та часом трапляється так що необхідно мати віддалений доступ до пристроїв, керувати якими можна тільки через інтерфейс COM-порта, і звичайно ж нам може допомогти в тому питанні чудова програмка minicom, але рискаючи по портах я наткнувся на дещо більш цікаве!)
Мова йде про програмку ser2net, судячи з опису до порта "Serial to network proxy" виходить що вона виступає деяким посередником між мережею і COM-портом, що дає змогу нам підєднуватись до пристроїв просто ввівши IP і порт (як телнет).
Встановлюється утилітка доволі просто:
make install clean -C /usr/ports/comms/ser2net
конфігурація описується в файлику /usr/local/etc/ser2net.conf.
Файлик містить
BANNER:banner1:Welcome to ser2net TCP port \p device \d\r\n\
second line \
third line\r\n
OPENSTR:open1:Open str\r\n
CLOSESTR:close1:close str\r\n
#CONTROLPORT:2000
TRACEFILE:tw1:/tmp/tw-\p-\Y-\M-\D-\H:\i:\s.\U
TRACEFILE:tr1:/tmp/tr-\p-\Y-\M-\D-\H:\i:\s.\U
8412:raw:600:/dev/cuau0:9600 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS tw=tw1 tr=tr1 attention
В першій строці задається текст, який виводиться при підключенні до сервера (тут можна написати щось про те що всі дії логуються і т.д.).
Формат BANNER:<name>:banner_text, при чому текст банера може бути багатостроковим (строки розділяються символами "\r\n") і містити модифікатори:
"\d" - ім'я пристрою,
"\p" - ТСР порт,
"\s" - параметри з'єднання з СОМ-портом,
"\х" - люба escape-послідовність стандарту "С".
Далі прописуються команди:
"OPENSTR" - ця команда відправляється пристрою під час підключення. Формат OPENSTR:<name>:openstr_text. Текст може приймати такі ж модифікатори, як і банер.
"CLOSESTR" - те саме що і OPENSTR, тільки команда буде відправлена при відключенні від обладнання (можна наприклад відсилати exit)
Формат CLOSESTR:<name>:closestr_text. Також може містити модифікатори як і банер.
"TRACEFILE" - ім'я файла, для збереження лога обміну (в нього пишеться все, що пише і читає COM-порт)
Формат TRACEFILE:<name>:filename.Також може містити модифікатори як і банер.
"CONTROLPORT" - порт керування. Задає порт через який можна міняти всі налаштування в реальному часі (не перезапускаючи демона). На практиці не використовується. Формат CONTROLPORT:<port>
Ну і найголовніше - зв'язки портів і сокетів:
Формат "<TCP port>:<state>:<timeout>:<device>:<options>":
"TCP port" - номер TCP порта, можна задати в форматі 127.0.0.1,2000 для привязки до конкретної адреси, або просто числом для привязки до всіх інтерфейсів,
"state" - може мати значення raw, rawlp, telnet, off.
При off порт не приймає підключення;
При raw передача даних ведеться "as is";
При rawlp відкриття порта пристрою відбувається без "termios", що дозволяє звертатись до /dev/lpX і принтерів;
При telnet запускаються протоколи telnet.
"timeout" - задає час простою, через який порт відключається.
"device" - адреса пристрою в форматі /dev/<device>
"options" - встановлення параметрів з'єднання з СОМ-портом. Значення пишуться через кому.
300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 - швидкості порта;
EVEN, ODD, NONE - налаштування парності бит;
1STOPBIT, 2STOPBITS - кількість стопбіт;
Далі, через пробіл вказується ім'я банера, openstr, closestr, tracefile (в форматі tw=tracefile для логування input і tr=tracefile для логування output), які ми настроїли вище.
Не забуваємо про автозапуск:
echo 'ser2net_enable="YES"' >> /etc/rc.conf
Запускаємо:
service ser2net start
Низького пінгу і високого аптайму!)
Коментарі