Linux

Zenoss SMS 缺少文本

  • April 5, 2016

我已經設置了一個Xenserver 來託管一個帶有Zenoss Core 4.2.4的**Debian VM。Xenserver 有一個Siemens T35 GSM 調製解調器連接到其串列埠 COM1。我使用了 ser2net + 一些 Xenserver 配置來讓它工作。(COM1 綁定、SELinux、…)我創建了一個可以輕鬆發送 SMS 消息的 shell 腳本。

我創建了一個觸發器+通知,除了消息為空之外,一切都執行良好!!!

這是腳本:

#!/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 頁面命令:

$ZENHOME/bin/sms.sh 10.10.0.52 3333 $RECIPIENT

這在Linux中工作如下:

./sms.sh 10.10.0.52 3333 +32486000000 message

我只是無法在 SMS 消息中收到來自Zenoss 的消息….我需要完成最後一步才能使其完全正常工作!

如果我嘗試從 Zenoss 發送測試消息,它也會到達,但沒有文本……

感謝您的時間!

它的工作,

我查看了/usr/local/zenoss/Products/ZenUtils/Utils.py文件,發現 Zenoss 將消息文本發送到,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 

我真的不知道期望,所以我無法幫助實際的腳本。

引用自:https://serverfault.com/questions/601647