Я создал Xenserver хостинг Виртуальная машина Debian с участием Zenoss Core 4.2.4. Xenserver имеет GSM-модем Siemens T35 подключен к его последовательному порту COM1. я использовал ser2net + некоторая конфигурация Xenserver, чтобы заставить его работать. (Привязка COM1, SELinux, ...) Я создал сценарий оболочки, который может легко отправлять SMS-сообщения.
Я создал триггер + уведомление, и все работает отлично, ЗА ИСКЛЮЧЕНИЕМ сообщения пусто !!!
Вот сценарий:
#!/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]
# - LOG
log_file -a sms.log;
send_log "$host $port $number:$message"
# - CONNECT
spawn telnet $host $port
sleep 1
# - SEND
send AT+CMGF=1\r;
expect "OK"
send AT+CMGS="$number"\r;
expect ">"
send "$message$ctrlz";
expect "OK"
# - END
А вот и команда страницы Зеносса:
$ZENHOME/bin/sms.sh 10.10.0.52 3333 $RECIPIENT
В Linux это работает следующим образом:
./sms.sh 10.10.0.52 3333 +32486000000 message
Я просто не могу получить сообщение от Zenoss в SMS-сообщении .... Мне нужно выполнить этот последний шаг, чтобы он полностью заработал!
Если я попытаюсь отправить тестовое сообщение от Зеносса, оно также придет, но без текста ...
Спасибо за уделенное время!
Это работает,
Я посмотрел в /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
Я действительно не знаю, ожидать, поэтому я не могу помочь с самим сценарием.
expect ">"
? Это какая-то ошибка копирования и вставки, или это действительно должно быть expect ">"
?