Zenoss SMS отсутствует текст
Я установил 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
А вот и команда Zenoss Page:
$ZENHOME/bin/sms.sh 10.10.0.52 3333 $RECIPIENT
Это работает в Linux следующим образом:
./sms.sh 10.10.0.52 3333 +32486000000 message
Я просто не могу получить сообщение от Zenoss в SMS-сообщении.... Мне нужно выполнить этот последний шаг, чтобы он полностью заработал!
Если я попытаюсь отправить тестовое сообщение от Zenoss, оно тоже приходит, но без текста...
Спасибо за ваше время!
3 ответа
Работает,
Я посмотрел в /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 ">"
?