Testo Zenoss SMS mancante

Ho installato un Xenserver che ospita un Debian VM con Zenoss Core 4.2.4 . Il Xenserver dispone di un modem GSM Siemens T35 collegato alla port seriale COM1. Ho usato ser2net + alcune configurazioni Xenserver per farlo funzionare. (COM1 binding, SELinux, …) ho creato uno script di shell che può facilmente submit messaggi SMS.

Ho creato un trigger + notifica e tutto funziona perfettamente eccetto che il messaggio è vuoto !!!

Ecco lo script:

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

E qui è il command della pagina Zenoss:

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

Questo funziona in Linux come segue:

 ./sms.sh 10.10.0.52 3333 +32486000000 message 

Non riesco proprio a ricevere il messaggio da Zenoss nel messaggio SMS …. ho bisogno di completare quest'ultimo passo per farlo funzionare pienamente!

Se provo a submit un messaggio di prova da Zenoss, arriva anche ma senza text …

Grazie per il tuo tempo!

3 Solutions collect form web for “Testo Zenoss SMS mancante”

Il problema sembra essere che dalla mia comprensione Zenoss invia il messaggio effettivo allo script STDIN, ma lo script lo prevede come un parametro della row di command. Devi modificare il tuo script di aspettare in modo che leggerà il messaggio da STDIN invece di $argv 3 . Dopo di che, il tuo script di test dovrebbe funzionare in questo modo:

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

Non so realmente di aspettarmi, quindi non posso aiutare con lo script effettivo.

Sta funzionando,

Ho guardato nel file /usr/local/zenoss/Products/ZenUtils/Utils.py per scoprire che Zenoss invia il text del messaggio a stdin quindi ho solo bisogno di leggere stdin nello script previsto per get il messaggio.

Ecco il nuovo script di lavoro: (noti che ho lasciato fuori i parametri di host e port)

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

Spero che questo aiuterà chiunque!

expect ">" ? È che un qualche tipo di errore di copia-incolla o dovrebbe che in realtà si expect ">" ?

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.