Работает,
Я поискал в файле /usr/local/zenoss/Products/ZenUtils/Utils.py
, что
Zenoss отправляет текст сообщения на stdin
, поэтому мне нужно было только прочитать stdin в сценарии ожидания, чтобы получить сообщение.
Вот новый рабочий сценарий : (обратите внимание, что я пропустил параметры хоста и порта)
#!/usr/bin/expect
# - VAR
set ctrlz \032
set xt \135
set timeout 15
set number [lindex $argv 0]
set message [gets stdin]
# - LOG
log_file -a sms.log;
send_log "$number:$message"
# - CONNECT
spawn telnet 10.10.0.52 3333
sleep 1
# - SEND
send AT+CMGF=1\r;
expect "OK"
send AT+CMGS="$number"\r;
expect ">"
send "$message$ctrlz";
expect "OK"
# - END
Надеюсь, это поможет кому угодно!
Проблема заключается в том, что, насколько я понимаю, Zenoss отправляет фактическое сообщение на вход STDIN сценария, но ваш сценарий ожидает его в качестве параметра командной строки. Вы должны изменить свой сценарий ожидания таким образом, чтобы он читал сообщение из STDIN вместо $ argv 3
. После этого ваш тестовый сценарий должен работать следующим образом:
echo "Message" | ./sms.sh 10.10.0.52 3333 +32486000000
Я действительно не знаю, ожидаю, поэтому я не могу помочь с самим сценарием.
ожидать "& gt;"
? Это какая-то ошибка копирования и вставки, или она должна быть ожидать ">"
?