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 ">"?

Другие вопросы по тегам