Jak wysyłać sms z konsoli ? Posłuży do tego program picocom.
Dlaczego picocom do interakcji z modemem a nie np: minicom ? Ponieważ skrypt w którym za pomocą expect’a wydajemy polecenia do picocom’a możemy spokojnie umieścić w cronie. Nie musisz się martwić żeby mieć otwarty terminal lub ze wystąpi błąd: No cursor motion capability (cm).
Uruchomienie picocom na com1 z szybkością 115200
picocom -b 115200 /dev/ttyS0
picocom v1.4 port is : /dev/ttyS0 flowcontrol : none baudrate is : 115200 parity is : none databits are : 8 escape is : C-a noinit is : no noreset is : no nolock is : no send_cmd is : ascii_xfr -s -v -l10 receive_cmd is : rz -vv Terminal ready AT OK AT+CMGF=1 OK AT+CMGS="888999000" >Test z modemu ES75 CTRL-Z +CMGS: 1 OK
AT – test połączenia pomiedzy modemem a terminalem.
AT+CMGF=1 – wejście w tryb pisania sms.
AT+CMGS=”888999000″ – Rozpoczecie pisania sms z wpisanym numerem odbiorcy
gdy pojawi sie znak > oznacza to że trzeba wpisać teść sms
kończymy pisanie sms wciskając CTRL-Z.
Aby powyższe zadziałało jako skrypt wykonywalny bez otwartego terminala trzeba ubrać to w expect’a:
#!/usr/bin/expect -f set speed "-b 115200" set dev "/dev/ttyS0" spawn picocom $speed $dev expect "Terminal Ready" send "ATr" expect "OK" send "AT+CMGF=1r" expect "OK" send "AT+CMGS="888999000"r" expect ">" send "Test z modemu ES75r" send "\032" #CTRL-Z expect eof
Bardzo prosto stworzyć można z tego bramke sms pisząc formularz w PHP
który będzie umieszczał powyższy plik ze zmienionym numerem i treścią sms w
określonym miejscu a cron co minute bedzie go wykonywał.