| Smstools3 - sterowanie routerem za pomocą SMSów | 
| shibby | Dodano 14-03-2015 20:29 | 
|  
 SysOp
 
  
 
 Posty: 17165
 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 updateipkg install smstools3
 W efekcie czego zainstalowane zostanie narzędzie "smsd".
 
 Tworzymy katalogi to obsługi spoolera:
 
 Cytat mkdir /opt/var/spool/sms/outgoingmkdir -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 = GSM1outgoing = /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; thenif 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 20switch3g
 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/smsecho "" >> /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 FiberSwitch: 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, 4x 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: 17165
 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 FiberSwitch: 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, 4x 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: 17165
 Dołączył: 15/01/2009 20:30
 
 
 | zrób testówkę. Wykonaj kolejno komendy z konsoli: 
 Cytat echo "To: $TEL" > /tmp/smsecho "" >> /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 FiberSwitch: 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, 4x 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: 17165
 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 FiberSwitch: 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, 4x 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: 616
 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: 17165
 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 FiberSwitch: 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, 4x 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; thenif 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.2Jetway 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/sAsus 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.2Jetway 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/sAsus RT-AC68UvE1 + RMerlin + Entware
 Netgear WNR3500Lv2 + DDWRT
 | 
|  | 
 
 |