我已经设置了一个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 发送测试消息,它也会到达,但没有文本......
感谢您的时间!
根据我的理解,问题似乎是 Zenoss 将实际消息发送到脚本 STDIN 输入,但您的脚本期望它作为命令行参数。您必须修改期望脚本,使其从 STDIN 而不是
$argv 3
. 之后,您的测试脚本应该像这样工作:我真的不知道期望,所以我无法帮助实际的脚本。
它的工作,
我查看了
/usr/local/zenoss/Products/ZenUtils/Utils.py
文件,发现 Zenoss 将消息文本发送到,stdin
所以我只需要读取期望脚本中的标准输入来获取消息。这是新的工作脚本:(请注意,我遗漏了主机和端口参数)
希望这会帮助任何人!
expect ">"
? 这是某种复制粘贴错误还是应该是这样expect ">"
?