Zenoss SMS 缺少文本

Zenoss SMS 缺少文本

我已经建立了一个Xenserver举办Debian 虚拟机Zenoss 核心 4.2.4。Xenserver 有一个西门子 T35 GSM 调制解调器连接到其串行端口 COM1。我使用ser2net+ 一些 Xenserver 配置以使其工作。(COM1 绑定、SELinux 等)我创建了一个可以轻松发送短信的 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

我就是无法得到信息来自 Zenoss 的短信......我需要完成这最后一步才能使其完全正常工作!

如果我尝试从 Zenoss 发送测试消息,它也会到达,但没有文本......

感谢您的时间!

答案1

问题似乎是,据我所知,Zenoss 将实际消息发送到脚本的 STDIN 输入,但您的脚本将其作为命令行参数。您必须修改您的期望脚本,使其从 STDIN 而不是读取消息。$argv 3之后,您的测试脚本应该像这样工作:

echo "Message" | ./sms.sh 10.10.0.52 3333 +32486000000 

我真的不知道期望是什么,所以我无法帮助解决实际的脚本。

答案2

它正在发挥作用,

我查看了/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

希望这对任何人都有帮助!

答案3

expect ">"?这是某种复制粘贴错误吗?或者实际上应该是这样expect ">"

相关内容