Smstools3 - sterowanie routerem za pomocą SMSów
|
shibby |
Dodano 14-03-2015 20:29
|
SysOp
Posty: 17121
Dołączył: 15/01/2009 20:30
|
Witajcie,
W temacie [url='https://openlinksys.info/forum/viewthread.php?thread_id=18449']Obsługa SMS przez modem 3G podlaczony pod Tomato[/url] rozwinęła się dość ciekawa rozmowa na temat możliwości wydawania routerowi komend za pomocą SMSów. To skłoniło mnie to próby skompilowania paczki smstools3 a oto efekty.
Tutorial jest wzorowany na opisie @obsego z forum [url='http://eko.one.pl/?p=openwrt-smstools3']eko.one.pl[/url]
Po wywołaniu komendy "switch3g" modem zostanie wykryty i pojawią się interfejsy /dev/ttyUSB0 (1/2/3/itd.). W moim przypadku odpowiednim interfejsem do komunikacji z modemem Huawei E173 jest interfejs /dev/ttyUSB0. Od razu uczulam o zapewnienie odpowiedniego zasilania dla modemu. Mój modem nie chciał stabilnie działać wpięty bezpośrednio do portu USB routera. Dopiero po zastosowaniu aktywnego HUBa USB modem zaczął pracować stabilnie.
Instalujemy paczkę z mojego repozytorium:
Cytat ipkg update
ipkg install smstools3
W efekcie czego zainstalowane zostanie narzędzie "smsd".
Tworzymy katalogi to obsługi spoolera:
Cytat mkdir /opt/var/spool/sms/outgoing
mkdir -p /opt/var/spool/sms/checked
mkdir -p /opt/var/spool/sms/failed
mkdir -p /opt/var/spool/sms/incoming
mkdir -p /opt/var/spool/sms/report
mkdir -p /opt/var/spool/sms/sent
Tworzymy plik konfiguracyjny
Cytat devices = GSM1
outgoing = /opt/var/spool/sms/outgoing
checked = /opt/var/spool/sms/checked
failed = /opt/var/spool/sms/failed
incoming = /opt/var/spool/sms/incoming
report = /opt/var/spool/sms/report
sent = /opt/var/spool/sms/sent
eventhandler = /opt/bin/obsluga_sms
logfile = /var/log/smsd.log
[GSM1]
init = ATE0
device = /dev/ttyUSB0
incoming = yes
#pin = 1111
baudrate = 19200
rtscts = no
i zapisujemy go jako /opt/etc/smsd.conf
Jak widzimy ścieżki do spoolera się pokrywają. W device wpisujemy nasz interfejs do komunikacji z modemem. Jeżeli karta wymaga odblokowania kodem PIN to należy zmienić na właściwy i odkomentować linię. Linia "eventhandler" wskazuje na podprogram, który zostanie wykonany każdorazowo przy obsłudze SMSa. My zajmiemy się jedynie analizą przychodzących (RECEIVED) smsów.
Moja zawartość pliku /opt/bin/obsluga_sms jest następująca:
Cytat #!/bin/sh
ADMINS="48xxxxxxxxx 48xxxxxxxxx"
if [ $1 != "RECEIVED" ]; then
exit 0
fi
TEL=$(awk '/^From:/ {print $2}' $2)
for CHECK in $ADMINS
do
if [ "$CHECK" == "$TEL" ]; then
ALLOWED=1
fi
done;
if [ "$ALLOWED" == "1" ]; then
if grep -q status $2; then
echo "To: $TEL" > /tmp/sms
echo "" >> /tmp/sms
echo `uptime` >> /tmp/sms
echo "WAN IP: `nvram get wan_ipaddr`" >> /tmp/sms
mv /tmp/sms /opt/var/spool/sms/outgoing
fi
if grep -q reboot $2; then
reboot
fi
fi
exit 0
Oczywiście plik musi mieć prawa execute:
Cytat chmod +x /opt/bin/obsluga_sms
W polu ADMINS wpisujemy numery telefonów, które mogą "rozkazywać" naszemu routerowi. Jeżeli jest ich kilka to numery należy oddzielić spacją. Powyższy skrypt reaguje na dwie komendy:
Cytat if grep -q status $2; then
if grep -q reboot $2; then
jak widać są to "status" i "reboot". Status wysyła uptime routera, obciążenie (CPU Load) oraz aktualny adres WAN IP. Reboot zwyczajnie restartuje router. Oczywiście skrypt można rozbudowywać o kolejne komendy. Na forum padały propozycje by np. za pomocą komend sms włączać i wyłączać dostęp SSH lub startować/wyłączać proces Transmission. Nic prostszego dla kogoś kto choć trochę lizną basha.
Na koniec pozostało uruchomić proces komendą:
Cytat smsd -c/opt/etc/smsd.conf
by zautomatyzować proces w przypadku restartu routera można do skrytu INIT dodać:
Cytat sleep 20
switch3g
sleep 10
smsd -c/opt/etc/smsd.conf
Oczywiście wcześniej musimy umieścić kod odpowiedzialny za montowanie dysku jako /opt.
Za pomocą tego programu możemy również wysyłać SMSy. W tym celu tworzymy plik /tmp/sms o zawartości
Cytat echo "To: 48xxxxxxxxx" > /tmp/sms
echo "" >> /tmp/sms
echo "Wiadomosc testowa" >> /tmp/sms
w efekcie czego otrzymujemy plik o zawartości:
Cytat To: 48xxxxxxxxx
Wiadomosc testowa
By ją wysłać wystarczy przenieść plik do katalogu wysyłkowego:
Cytat mv /tmp/sms /var/spool/sms/outgoing
Jest to ciekawa opcja do użycia, którą można użyć w różnego rodzaju skryptach np. logwatchu, który może analizować nieudane próby logowania na router i poinformować nas o tym SMSem.
Edytowany przez shibby dnia 05-05-2015 19:56
Router: Unifi Cloud Gateway Max
Switch: Unifi USW-Lite-16-PoE
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
newcomer |
Dodano 02-04-2015 13:16
|
User
Posty: 6
Dołączył: 02/04/2015 13:05
|
Jestem zainteresowany opisaną tutaj funkcjonalnością. Mam jednak pytanie: czy zamiast dedykowanego modemu 3G można wykorzystać stary smartphone np. samsung galaxy S i9000?
Próbowałem ten telefon połączyć przez usb z routerem (Tomato)- ustawiłem poprawnie mode z PDA na USB korzystając z *#7284* jednak nie dało to zamierzonego efektu. Czy ktoś próbował podobnego tandemu i może nakierować na rozwiązanie? |
|
|
|
shibby |
Dodano 02-04-2015 14:41
|
SysOp
Posty: 17121
Dołączył: 15/01/2009 20:30
|
nie próbowałem podpinać telefonu. Wszystko sprowadza się do pytania czy uda ci się sprawdzić by router wykrył telefon i dało się przez niego wykonywać komendy.
Ja powiem szczerze uwielbiam tą funkcjonalność, nawet w tak ograniczonej formie. Dziś zdalnie wykonałem niefortunną komendę iptables i zablokowałem sobie dostęp do routera. Wystarczył sms z komenda "reboot" i po chwili już miałem dostęp do routera
Router: Unifi Cloud Gateway Max
Switch: Unifi USW-Lite-16-PoE
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
pit_i_mat |
Dodano 05-05-2015 19:25
|
User
Posty: 3
Dołączył: 05/05/2015 19:18
|
A jak to skonfigurować dla ZTE MF195?
Zmieniłem:
na
Modem odpiera SMS'y i wykonuje skrypt-takie testowe polecenie. Ale nie wysyła wiadomości zwrotnej :( |
|
|
|
shibby |
Dodano 05-05-2015 19:52
|
SysOp
Posty: 17121
Dołączył: 15/01/2009 20:30
|
zrób testówkę. Wykonaj kolejno komendy z konsoli:
Cytat echo "To: $TEL" > /tmp/sms
echo "" >> /tmp/sms
echo "SMS testowy" >> /tmp/sms
mv /tmp/sms /opt/var/spool/sms/outgoing
oczywiście zamiast $TEL wstaw swój numer zaczynając od 48. Jeżeli ścieżka do outgoing jest inna to też ją popraw. Po wydaniu ostatniej komendy smsd powinno wysłać ci testowego smsa. Może to potrwać nawet minutę. Wtedy będziesz miał pewność czy to oby na pewno coś nie tak z usługą smsd.
Router: Unifi Cloud Gateway Max
Switch: Unifi USW-Lite-16-PoE
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
pit_i_mat |
Dodano 05-05-2015 20:34
|
User
Posty: 3
Dołączył: 05/05/2015 19:18
|
Niestety, ale nie działa :(
W logu znalazłem
Command is sent, waiting for the answer
GSM1: <- +CMS ERROR: 96 (Invalid mandatory information)
GSM1: The modem answer was not OK: +CMS ERROR: 96 (Invalid mandatory information)
Waiting 10 sec. before retrying
GSM1: Checking if modem is ready
EDIT
Dodałem numer centrum sms i program odżył i wygląda na to, że wszystko jest OK. Wielkie dzięki za skrypty :)
EDIT2
Zapytam tak przy okazji...
Chciałbym używać modemu USB ZTE MF195 do obsługi SMS'ów i tylko SMS'ów nic więcej.
Czy da się komendami AT ustawić modem tak aby:
-łączył się tylko poprzez GSM
-łączył się w roamingu (kartę mam w sieci Play)
Wirtualny CD-ROM już wyłączyłem. Chodzi mi o to aby modem "wykastrować" z wszystkich niepotrzebnych mi funkcji.
Edytowany przez shibby dnia 06-05-2015 12:05
|
|
|
|
przemasisko |
Dodano 06-05-2015 12:59
|
Super User
Posty: 550
Dołączył: 17/05/2010 13:56
|
Takie pytanko,... Karta SIM musi być typowo internetowa, czy wystarczy zwykły starter za 5 zł z ważnością odbieranych połączeń i SMSów na 12 m-cy? |
|
|
|
pit_i_mat |
Dodano 06-05-2015 13:17
|
User
Posty: 3
Dołączył: 05/05/2015 19:18
|
Ja mam zwykłą kartę Play Fresh z roczną ważnością konta |
|
|
|
przemasisko |
Dodano 06-05-2015 13:19
|
Super User
Posty: 550
Dołączył: 17/05/2010 13:56
|
OK, dzięki za info |
|
|
|
shibby |
Dodano 06-05-2015 15:08
|
SysOp
Posty: 17121
Dołączył: 15/01/2009 20:30
|
ja mam nju mobile z usługą powieki
karta wręcz nie może być kartą typu DATA (do internetu) bo będziesz bulił horrendalne opłaty za ewentualne SMSy. Zwykły starter z długim okresem ważności konta i po temacie.
Router: Unifi Cloud Gateway Max
Switch: Unifi USW-Lite-16-PoE
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
przemasisko |
Dodano 06-05-2015 16:22
|
Super User
Posty: 550
Dołączył: 17/05/2010 13:56
|
Właśnie tak samo pomyślałem już wcześniej i tak zrobiłem. Starter zakupiony
Dzięki za wskazówki. Jak dojdzie do mnie hub, bo już brakło portów to dam znać jak to hula |
|
|
|
overflow2 |
Dodano 06-05-2015 16:54
|
Super User
Posty: 612
Dołączył: 28/01/2008 08:36
|
Z tymi powiekami to trzeba uważać, bo oni wysyłają co jakiś czas sms, na który trzeba odpisać. Taka weryfikacja czy używasz karty, inaczej go blokują. Był o tym gdzieś na necie artykuł i jest nawet o tym mowa w regulaminie.
Asus RT-AC56U FT-AIO
|
|
|
|
shibby |
Dodano 06-05-2015 19:01
|
SysOp
Posty: 17121
Dołączył: 15/01/2009 20:30
|
to nic. Jak zablokują to się kupi następny Nic strategicznego toto nie robi przecież. A ogólnie każda oferta na kartę z roczną ważnością konta ma jakiś haczyk
Można też pomyśleć i dopisać do eventhandle obsługę, że jak przyjdzie sms z taką weryfikacją to niech nam wyśle powiadomienie lub niech nawet automatycznie na nią odpowie Nie widziałem jeszcze takiego smsa jak wygląda więc póki co to jak wróżenie z fusów.
Można też co jakiś czas zajrzeć sobie do katalogu incoming i przeczytać wszystkie smsy jakie przyszły
Router: Unifi Cloud Gateway Max
Switch: Unifi USW-Lite-16-PoE
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
przemasisko |
Dodano 05-08-2015 15:06
|
Super User
Posty: 550
Dołączył: 17/05/2010 13:56
|
Jeśli ktoś nie chce pamiętać, aby komendy wysyłać zawsze z małej literki wystarczy lekko zmodyfikować skrypt. Tzn. te dwie linie dodając do grep przełącznik -i.
Cytat if grep -i -q status $2; then
if grep -i -q reboot $2; then |
|
|
|
Marco76 |
Dodano 05-08-2015 22:16
|
Super User
Posty: 433
Dołączył: 08/03/2007 19:47
|
Cytat shibby napisał(a):
[...] ogólnie każda oferta na kartę z roczną ważnością konta ma jakiś haczyk :)
Z tych nowych ofert zapewne tak, pewnie doszli do wniosku, że się im to nie opłaca. Dlatego jak wyczułem koniec Play Fresh to szybko kupiłem trzy startery ;o) Haczyków żadnych w tej ofercie nie widzę. Jak mało powiadomień idzie (zaniki zasilania serwera tylko) to ładuję 10 zł na rok ;-P
Plus miał opcję rocznej ważności, ale trza było zmienić taryfę na konkretną a potem jeszcze sms z kodem wysłać oraz doładować konto, dopiero zaskakiwała roczna ważność.
Orange wymagał po upływie rocznej ważności też jakichś zabiegów po doładowaniu, kod się jakiś wysyłało czy cuś - nie pamiętam jaką mam taryfę, stara jakaś.
[small] Pozdrawiam, Monter
Asus RT-N18 + FreshTomato 2019.3 K26ARM USB AIO-64K-NOSMP + ILHM v2
HTPC Chieftec FLYER FI-02BC-U3 + GA-H61N-USB3 + i3-3225 + 4GB RAM + LibreELEC + Xbox DVD Remot
|
|
|
|
belliash |
Dodano 06-08-2015 09:33
|
Maxi User
Posty: 730
Dołączył: 17/08/2010 08:53
|
W orange mozna miec konto wazne przez rok od momentu wyslania darmowego SMSa. Nic nie stoi na przeszkodzie aby tego SMSa wysylac cyklicznie z crona zapewniajac sobie w ten sposob nielimitowana waznosc konta (do czasu zakonczenia promocji). Majac starter z Orange mozna cieszyc sie Internetem (jakis failover mozna sobie ustawic) oraz odbierac i wysylac SMSy.
Linksys WRT1900AC: OpenWrt 19.07.2
Jetway JC390F841AA34B: OpenWrt 19.07.2
|
|
|
|
Steel_Rat |
Dodano 15-11-2015 21:03
|
OL Maniac
Posty: 1831
Dołączył: 29/05/2011 22:24
|
Pozwólcie, że trochę odświerze temat. Bo spodobało mi się sterowanie routerem z SMS. Tak, że nawet stworzyłem aplikację na Adroida przez, którą można wysyłać SMS do routera. Odpada pamiętanie wszystkich komend. Aplikacja ta jest stworzona w "MIT App Inventor 2 Beta" więc przy instalacji chce dosyć dużo praw. Jak by kogoś interesowała to tu można pobrać. http://ekssite.tk/RouterSMS.apk.
Umożliwia ona wysyłanie własnych komend do routera. Na początku w opcjach podajemy numer telefonu z kierunkowym do Polski bez plusa. W "Lista poleceń" tam definiujemy komendy. Naza koment i polecenie jakie ona wysyła np. Nazwa - "Restart routera" komenda -"rebbot".
Mam pytanie nie ma ktoś skrtypu, który umożliwia przeglądanie i wysyłanie SMS przez WWW routera?
WRT3200ACN (WRT32X) + OpenWRT 18.06+światełko 150/150 Mb/s
Asus RT-AC68UvE1 + RMerlin + Entware
Netgear WNR3500Lv2 + DDWRT
|
|
|
|
belliash |
Dodano 19-02-2016 19:53
|
Maxi User
Posty: 730
Dołączył: 17/08/2010 08:53
|
Wszystko smiga bardzo fajnie, ale... no wlasnie:
1) Mozna tu uzyc kodu USSD aby sprawdzic stan konta?
2) Jak wyslac SMSa na krotki numer?
Połączony z 19 luty 2016 20:11:50:
Ad2: Jezeli chcemy wyslac SMSa na krotki numer, to trzeba go poprzedzic literka "s", np:
gdzie XXXX to krotki numer.
Pytanie co z kodami USSD? :)
Edytowany przez belliash dnia 19-02-2016 20:11
Linksys WRT1900AC: OpenWrt 19.07.2
Jetway JC390F841AA34B: OpenWrt 19.07.2
|
|
|
|
Robertus |
Dodano 09-09-2016 11:51
|
User
Posty: 48
Dołączył: 15/01/2016 12:27
|
troszkę odświeżę temat. Panowie jak odbierać smsy przychodzące na numer modemu w tomato bo coś mi postępując zgodnie z tą instrukcją nie działa
--------------------------------
Asus RT-AC68R/U
Tomato ver. 138 AIO
|
|
|
|
Steel_Rat |
Dodano 09-09-2016 14:13
|
OL Maniac
Posty: 1831
Dołączył: 29/05/2011 22:24
|
Jaki modem? To modem HI-LINK czy nie?
WRT3200ACN (WRT32X) + OpenWRT 18.06+światełko 150/150 Mb/s
Asus RT-AC68UvE1 + RMerlin + Entware
Netgear WNR3500Lv2 + DDWRT
|
|
|