web-dev-qa-db-ja.com

Zenoss SMSテキストがありません

Debian VMをホストするXenserverZenoss Core 4.2.4。 Xenserverには、シリアルポートCOM1に接続されたSiemens T35 GSMモデムがあります。 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 PageCommandです。

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

これはLinuxで次のように機能します。

./sms.sh 10.10.0.52 3333 +32486000000 message

SMSメッセージ....でZenossからメッセージを取得できません。完全に機能させるには、この最後の手順を完了する必要があります。

Zenossからテストメッセージを送信しようとすると、メッセージも届きますが、テキストはありません...

お時間をいただきありがとうございます!

2
grmbl

それは働いています、

/usr/local/zenoss/Products/ZenUtils/Utils.pyファイルを調べたところ、Zenossがメッセージテキストstdinに送信していることがわかりました。そのため、メッセージを取得するには、expectスクリプトでstdinを読み取るだけで済みました。

これがnew作業スクリプトです:(ホストとポートのパラメーターを省略したことに注意してください)

#!/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

これが誰にでも役立つことを願っています!

2
grmbl

問題は、私の理解では、Zenossが実際のメッセージをスクリプトのSTDIN入力に送信することですが、スクリプトはそれをコマンドラインパラメーターとして予期しているようです。 $argv 3ではなくSTDINからのメッセージを読み取るようにexpectスクリプトを変更する必要があります。その後、テストスクリプトは次のように機能するはずです。

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

私は本当に期待を知らないので、実際のスクリプトを手伝うことはできません。

2
Sven

expect ">"?それはある種のコピーアンドペーストエラーですか、それとも実際にはexpect ">"

0