Сценарий оболочки для выполнения сеанса telnet в ser2net

Я установил xenserver (бесплатный) хостинг VM (Debian 7.5). На этом xenserver я подключил последовательный GSM-модем. Я настроил xen для запуска ser2net, поэтому у меня есть серийный прокси-сервер. Это прекрасно работает локально и дистанционно (telnet). Теперь на VM Debian я запускаю zenoss, и я хочу использовать функциональность пейджинга. Я создаю скрипт bash для имитации сеанса telnet и отправки сообщения. Этот скрипт работает только на 50%.

#!/usr/bin/expect set timeout 20 set number [lindex $argv 0] set message [lindex $argv 1] spawn telnet 10.10.0.52 3333 #wait? sleep 1 send AT+CMGS="$number"\r; expect ">" send "$message^Z"; interact #... 

Запуск скрипта:

 administrator@debian:/home/zenoss$ ./sms.sh +32486000000 xxen spawn telnet 10.10.0.52 3333 Trying 10.10.0.52... Connected to 10.10.0.52. Escape character is '^]'. AT+CMGS="+32486000000" > xxen^Z 

У меня возникают проблемы с отправкой управляющего символа Ctrl + Z для инициирования отправки, он зависает. (обратите внимание: ^ Z – это реальный символ, вставленный с vi). Плюс, как мне обращаться с несколькими получателями? И как мне выйти и отключиться.

EDIT: я попробовал

отправить «$ message ^ Z»;

в

отправить «$ message» ^ Z;

но получил этот результат:

 administrator@debian:/home/zenoss$ ./sms.sh +32486000000 xxen spawn telnet 10.10.0.52 3333 Trying 10.10.0.52... Connected to 10.10.0.52. Escape character is '^]'. AT+CMGS="+32486000000" > extra characters after close-quote while executing "send "$message"^Z; interact #... " (file "./sms.sh" line 10) 

ОБНОВИТЬ:

 #!/usr/bin/expect # - VAR set ctrlz \032 set xt \135 set timeout 15 set host [lindex $argv 0] set port [lindex $argv 1] set number [lindex $argv 2] set message [lindex $argv 3] # - CONNECT spawn telnet $host $port sleep 1 # - SEND send AT+CMGS="$number"\r; expect ">" send "$message$ctrlz"; expect "OK" # - END 

One Solution collect form web for “Сценарий оболочки для выполнения сеанса telnet в ser2net”

Чтобы отправить контрольный символ в ожидании, отправьте восьмеричный символ.

 send $message send \032 

или

 set ctrlZ \032 send "$message$ctrlZ" 

Ref:

  • Если символ EOF обрабатывается при отправке через telnet-соединение
  • команда telnet с пользовательской продолжительностью тайм-аута
  • Тестирование правила брандмауэра - сбой telnet
  • Как я могу установить kerberised сервисы на debian?
  • FreeBSD telnet не использует root
  • Как заставить telnetd принимать произвольные данные в переменной TERM?
  • Маршрутизируемый маршрутизатор OpenWrt не подключается через USB к последовательному кабелю
  • Копирование файлов между пользователями Использование Telnet
  • Отключить входящие соединения telnet
  • Команды IAC Telnet
  • Можем ли мы использовать ssh для подключения к веб-серверу, а затем отправить HTTP-запрос и получить ответ HTTP?
  • Linux и Unix - лучшая ОС в мире.