Kirjoittaja Aihe: Tekstiviesti (SMS) kun palvelin / laite ei vastaa [Ratkaistu]  (Luettu 4817 kertaa)

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Kirjoitin ohjelman (BASH-scripti) joka valvoo palvelinta (tai mitä hyvänsä pingattavaa laitetta) minuutin välein ja lähettää tekstiviestin nettitikun avulla jos laite ei vastaa pingiin.   Ohjelma syntyi omasta tarpeesta valvoa että webbipalvelimen verkkoyhteys toimii.  

Yhden ohjelman sijaan tein kaksi itsenäistä ohjelmaa:

1)  Valvontaohjelma   (mondev)

2) Tekstiviestien lähetys nettitikulla    (sendmob)

Valvontaohjelma kutsuu tekstiviestien lähetysohjelmaa jos palvelin / verkkoyhteys ei toimi.  Erillistä tekstiviestien lähetysohjelmaa voi hyödyntää muuhunkin tarkoitukseen, tuolla voi helposti lähettää mitä hyvänsä hälytyksia jostain muusta ohjelmasta tai tekstiviestejä päätteestä.

Ohjelmat löytyvät täältä:

http://www.homelinuxpc.com/download/mondev.bash

http://www.homelinuxpc.com/download/sendmob.bash

Nämä on testattu halvan nettitikun kanssa (kiinalainen "Hulinna" alias "Cagileo")  Saunalahden prepaid liittymällä mutta pitäisi toimia monella muullakin, ohjaukseen käytetään tavanomaisia "AT" -komentoja jotka löytyvät varmaan kaikista tikuista.   Jos joku testaa muiden tikkujen toimintaa niin kommentit ovat tietysti tervetulleita kun itsellä ei ole tikkuvalikoimaa.


Asennus:

1) Tiputa molemmat ohjelmat koneellesi vaikka kotihakemistoosi

2) Anna ajo-oikeus:
Koodia: [Valitse]
chmod +x mondev.bash; chmod +x sendmob.bash  

3)  Aja ohjelma kerran niin se asentaa itsensä ja antaa helpin:

Koodia: [Valitse]
./sendmob.bash
Koodia: [Valitse]
./mondev.bash
Asennus kysyy salasanasi, asentuu  -->/usr/local/bin.


Käyttö:

Koodia: [Valitse]
mondev  valvottavan_nimi_tai_ip_osoite  puhelinnumero [laitenimi] [viesti]
Laitenimi ja viesti eivät ole pakollisia.

Esimerkki:

           mondev  example.com  +358401234567   Nettiyhteys on nurin !

           mondev 192.168.1.10   +358401234567    Palomuuri ei vastaa

Komentorivillä voi antaa myös laitenimen. Tätä tarvitaan jos modemin laitenimi on jotain muuta kuin /dev/ttyUSB0. Oletuksena on /dev/ttyUSB0 jos laitenimeä ei anneta.  

          mondev example.com +358401234567  /dev/ttyUSB0  Nettiyhteys on nurin !

Jos esimerkissä kohteena oleva nimi "example.com" ei vastaa niin viesti lähtee numeroon +258401234567.   Ohjelma ei pakota antamaan viestiä, silloin hälytyksenä vain menee tyhjä viesti (ja lähettäjän numerosta joutuu selvittämään mistä hälytys tuli).

Ohjelma loggaa tiedostoon "mondev.log" virhetapahtumat.  Tiedosto on tavanomainen tekstitiedosto.


Pelkkiä viestejä ilman valvontaa ?

Tuota tekstiviestien lähetysohjelmaa voi käyttää yksinäänkin:

          sendmob +358401234567   Lähetinpä viestin nettitikullani.


Ohjelmaa voi soveltaa periaatteessa kummin päin haluaa, voi asentaa palvelimelle ja seurata että netti näkyy tai seurata palvelinta ulkoa päin joltain toiselta koneelta.  Valvoa voi mitä hyvaänsä laitetta tai yhteyttä jos kyseessä on vain jokin kohde joka vastaa pingiin.   Ohjelman kuormitusvaikutus on liki täysi nolla.    Kun ohjelma havaitsee yhteyden katkenneen se piippaa kerran, lähettää tekstiviestin ja kirjoittaa lokitiedostoon merkinnän.  Viestin lähetyksen voi estää 10 sekunnin kuluessa katkaisemalla ohjelman ajon  painamalla Ctrl-C.   Ohjelmaa ajetaan päätteessä jos virhetapahtumat halutaan nähdä.   Jos joku on huolissaan näiden skriptien tietoturvasta niin kaikki koodi on itse kirjoittamaani (ja bash-tiedostona helposti kenen hyvänsä tarkastettavissa).
 
Olen testikäyttänyt näitä kehittelyn aikana, jos vikoja löytyy niin korjataan perässä.  



(off-topic)
Asian vierestä, sain taas huomata että ohjelman kirjoitus BASH: in avulla on todella tarkkaa puuhaa välilyöntien kanssa.  Yksi välilyönti voi vaikuttaa yhtä paljon ohjelman toimintaan kuin mitä jos käräjäoikeuden antamassa vuoden tuomiossa lukee "karu selli" tai "karuselli".  Voidaan tietysti ajatella että jälkimmäisessä tapauksessa paatunutkin rikollinen miettisi rikoksen kannattavuutta --- jo lyhyelläkin tuomiolla ja miten tuo vaikuttaisi korkeimman oikeuden päätöksenä ?
« Viimeksi muokattu: 28.09.11 - klo:21.32 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Lainaus
Olen testikäyttänyt näitä kehittelyn aikana, jos vikoja löytyy niin korjataan perässä.  

Löytyihän niitä vikoja pari, korjasin ja laitoin korjatun version esille. Korjattu versio päivittää vanhan automaattisesti kun sen asentaa samalla tavalla kuin edellä kerrottu.  

Ohjelman tekemä lokitiedosto näyttää tältä:

tail -n 5 mondev.log
2011-09-28 20:50:41 +0300 3 ke 80.220.127.53 /dev/null +3584055..... homelinuxpc ei vastaa
2011-09-28 21:14:42 +0300 3 ke 80.220.127.53 /dev/null +3584055..... homelinuxpc ei vastaa
2011-09-28 21:25:00 +0300 3 ke 80.220.127.53 /dev/null +3584055..... homelinuxpc ei vastaa
2011-09-28 21:26:12 +0300 3 ke 80.220.127.53 /dev/null +3584055..... homelinuxpc ei vastaa
2011-09-29 08:16:24 +0300 4 to 80.220.127.53 /dev/null +3584055..... homelinuxpc ei vastaa

Testasin ohjelmaa työaseman päässä ja katkaisin kokeessa työaseman verkkoyhteyden.

Ohjelmaa pystyy testaamaan myös niin että viestiä ei oikeasti lähetetä kun nettitikun laitenimeksi antaa /dev/null kuten testissäni:

(Klikkaa kuvaa alla niin näkyy paremmin)
« Viimeksi muokattu: 08.10.11 - klo:12.55 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Korjasin hieman "sendmob" (tekstiviestin lähetys) -osaa, versio 1.02 saatavissa.  Olisi mielenkiintoista kuulla toimiiko tämä nyt ok muidenkin nettitikuilla.

Tekstareita voi lähettää päätteestä tuolla pelkällä "sendmob" ohjelmalla tähän tyyliin:

Koodia: [Valitse]
sendmob +358401234567  Terve, lahetin taman nettitikulla !
Jos nettitikkusi näkyy jonain muuna laitteena kuin "/dev/ttyUSB0" niin tuo laitteen nimi pitää antaa myös tuohon mukaan:

Koodia: [Valitse]
sendmob  /dev/jotain_tähän  +358401234567  Viesti nettitikulla
Tuon laitenimen näkee kun kurkistaa mitä laitteita näkyy "/dev" -hakemiston alla:

Koodia: [Valitse]
ls /dev

Puute:  Skandit (äöå) eivät mene oikein, täytyisi tutkia lisää voiko tuon korjata helposti.

Edit 8.10.2011:  Versio 1.03 esillä, korjattu käyttäjän syöttämien tietojen tarkistusta.  
« Viimeksi muokattu: 08.10.11 - klo:12.58 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Tein joitakin parannuksia "mondev" :in pingausalgoritmiin tarkoituksena välttää turhia hälytyksiä kun verkko on ylikuormittunut mutta yhteys ei kuitenkaan ole kokonaan kuollut. Jos ensimmäinen lyhyt pingaus (3x) epäonnistuu pidetään 10 s. tauko ja yritetään pidempään (15x). Jos tämäkin epäonnistuu niin lähetetään hälytys.  Versio 1.02 esillä.


Edit 8.10.2011:  Toiminut viikon ok ilman virhehälytyksiä eli idea näyttäisi toimivan.

Edit 24.10.2011:  Tämä on osoittautunut hyvin hyödylliseksi apuvälineeksi, voi valvoa yhtä hyvin että pelkkä verkkoyhteys on hengissä kuin myös jotain yksittäistä palvelinta tai laitetta.  
« Viimeksi muokattu: 24.10.11 - klo:11.58 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

teemku

  • Käyttäjä
  • Viestejä: 28
    • Profiili
Ihan mielenkiinnosta mahdollisuuksia kohtaan pohdin, että onko tuolla tekstiviestin lähettävällä sovelluksella mahdollista vaikuttaa lähettäjän tietoihin? Esimerkiksi voiko lähettäjäksi määrittää vaikkapa palvelimen nimen numeron sijaan? -- Eli vähän samaan tyyliin kuin kaupallisissa SMS-gateway palveluissa lähettäjä voi olla numero tai teksti.

Tällaisesta palikasta voisi olla valtavasti iloa jos nimen voisi muuttaa. Nuo gateway pavelut, suomalaiset niistä, kun maksavat mansikoita ja kermavaahtoa joten ei tarvitse edes harkita niitä kotiprojekteihin >:(

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Sovellus ei kajoa mitenkään tikun tuolle puolelle enkä tiedä miten/onko  tuollainen asia nettitikuissa tuettu.  Lähettäjänä näkyy oikea puhelinnumero joka liittyy tikussa olevaan sim-korttiin.  Viestiin itseensä voi toki laittaa mitä nimiä tai tekstiä haluaa ja myöskin jos teet jonkun oman ohjelman se voi kutsua tätä (sendmob) välittämään tekstiviestin.   
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Tein pieniä korjauksia ja parannuksia näihin.  
Ongelmana viestin lähettävässä osassa (sendmob) oli kun nettitikun irrotti ja laittoi kiinni se saattoikin olla ihan eri laitenumeroilla kuin edellisellä kerralla. Lisäsin koodiin laitteen automaattisen etsinnän jolloin portti pysyy oikeana vaikka tikkua nykii koneesta välillä pois.  Löysin lisäksi korjauksia tikkuni toimintaan kun tikku lopetti ajoittain viestin lähetyksensä.  Ehkä tuo auttaa muidenkin tikkujen kanssa, en ole kokeillut.  Testasin vanhalla "Hulinna" -tikulla Saunalahden PrePaid: in kanssa.
Itse monitorointiohjelma (mondev) on toiminut pitkään hyvin.  Tein siihen muutokset jotka johtuvat automaattisesta alimman /dev/ttyUSB? -laitteen etsinnästä.
Korvasin vanhemmat versiot uusilla tuolla linkkien takana.  
« Viimeksi muokattu: 21.05.12 - klo:15.53 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

putte prossu

  • Käyttäjä
  • Viestejä: 143
    • Profiili
Hienolta toiminnolta vaikuttaa :) Olisikohan tällä mahdollista saada tarkempia virheilmoituksia palvelimelta kuten vaikka jos RAID piiputtaa tai tai kone siirtyy UPS:n varaan? Nyt mulla tulee ilmoitukset näistä sähköpostiin mutta olisihan tuo SMS huomattavasti parempi.
AMD FX-4100, Sabertooth 990FX R2.0, 8GB Kingston ECC DDR3, Radeon 5770 1GB, 240GB SSD + 5x 2TB raid5, Debian 9.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Hienolta toiminnolta vaikuttaa :) Olisikohan tällä mahdollista saada tarkempia virheilmoituksia palvelimelta kuten vaikka jos RAID piiputtaa tai tai kone siirtyy UPS:n varaan? Nyt mulla tulee ilmoitukset näistä sähköpostiin mutta olisihan tuo SMS huomattavasti parempi.

Tuolla "sendmob": lla voi lähettää mielivaltaisia ilmoituksia nettitikulla mistä hyvänsä häiriöstä mutta se virhetilanne pitää saada mieluummin tavalla tai toisella kutsumaan tuota "sendmob": ia antaen sille perään puhelinnumeron ja virheviestin.  Vaihtoehtoisesti voi halutessaan kirjoittaa oman koodin pätkän samaan tapaan kuin "mondev" tekee joka kutsuu viestin lähetystä kun virhe havaitaan. 
 
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Muokkasin hieman "sendmob" -ohjelmaa, lähettelee tekstiviestiä nyt myös Nokian halvoilla C-sarjan puhelimilla, testasin itse tuota C1 mallilla USB-kaapelin kanssa (oli Samsungin jonkun mallin USB-johto, sattui olemaan sama liitin tuossa).  Tämä versio löytää oikean portin (/dev/tty...) myös tuon Nokian kanssa automaattisesti, korjasin tunnistuskoodia hieman.   Laitoin uuden "sendmob" version 1.06 esille.

 
« Viimeksi muokattu: 28.05.12 - klo:21.33 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.