lauantai 8. kesäkuuta 2013

Raspberry Pi viestittää

Aluksi pari lainausta verkkosivulta Internetix opinnot:

1. "Maailma on jatkuvassa muutoksen tilassa. Jokainen hetki on täydellisesti erilainen kuin toinen. Se ruusu, jonka poimin tänään, on huomenna kuollut. Vaikka jättäisin sen kasvamaan, se kuihtuu eikä pysy ennallaan. Kuitenkin sen tilalle kasvaa uusi ruusu, samanlainen; onko mikään sittenkään muuttunut?"

2. "Hyvyys on harmoniaa ja tasapainoista tarkoituksenmukaisuutta, joka ilmenee ihmisen teoissa, yhteiskunnissa ja koko maailmankaikkeudessa. Pahan ideaa ei ole samalla tavalla olemassa, vaan tietämättömyys hyvästä aiheuttaa tekoja, jotka eivät ilmennä hyvyyttä oikein." 

(1. Muutoksen ja pysyvyyden ongelma 2. Platonin idealismi, Johdatus filosofiseen ajatteluun
Minna Vähämäki/Otavan Opisto)

Entäpä, jos mikään ei toimi

Todella, maailma muuttuu. Ihmisten keskeisessä kanssakäymisessä muutokset voivat joskus olla äkillisiäkin, ja myös peruuttamattomia. Entinen siedettävä tilanne muuttuu ehkä sietämättömäksi. Siis tilanneko - vai ihminen. Enemmän tai vähemmän dramaattisia kokemuksia on varmaankin kaikilla. Ääripäänä on ehkä täydellinen luottamuksen katoaminen. Kerran menetettyä luottamusta ei voi palauttaa - sanotaan.

Entäpä tietotekniikassa. Rakentaessaan luotettavaa järjestelmää yrittää suunnittelija ottaa etukäteen huomioon mahdollisia yllättäviä tekijöitä. Tietotekniikassa tehtävä on hallittavissa. Bitit ja tavut järjestyvät koodauksen mukaisesti. Mahdollisten ongelmien ennakointi on toki hiukan monimutkaista. Hyvin suunnitellussa sovelluksessa käyttäjälle jää vain vähän mahdollisuuksia suorittaa vääriä, ongelmiin johtavia toimia. Ulkopuolelta tulevista vaikutuksista muodostuu oma ongelmakenttänsä. Vaikutuksia voi olla monenlaisia, sähkökatko, ukonilma, häiriöt verkkopalveluissa, ilkivalta jne. Osa ongelmatilanteista on sellaisia, että seurauksena on "mikään ei toimi".

Varmistamisesta

 Olen rakentanut vaatimattomaan Raspberry Pi tietokoneeseeni toimintoja, joita hallitaan etäkäytöllä. Raspin etähallinta on perusteltua vaikkapa siksi, että oman koneen näyttö voi toimia myös Raspin näyttönä. Ja tietenkin, etäkäyttöinen Raspi voi olla sijoitettuna melkein mihin vain, kunhan siihen saa verkkoyhteyden. Suuri osa laitteen toiminnasta  on automaattisten, sovelluksiin kirjoitettujen, toivottavasti vakaiden toimintojen varassa, mutta välillä tarvitaan myös käyttäjää. Turvallisuussyistä koneelle pääsy on rajoitettu minimiin, kuten edellisessä blogissa kuvailin. Vain ssh-yhteys on käytettävissä. Koneen ja sen toimintojen hallinta tällä tavoin vaatii käyttäjältä osaamista. Mikä siis voisi olla ongelmana. Sähkökatkosta toipumisen voi automatisoida ja niin olen tehnytkin. Häiriö verkkoyhteydessä on ehkä hieman hankalampi. On mahdollista, että em. häiriön seurauksena tai muusta syystä yhteys nimipalvelimeen katkeaa. Etäkäyttö ulkoverkosta on silloin mahdotonta. Koneiden välinen liikenne on ip-osoitteiden varassa. Nimipalvelimet palauttavat hukatun yhteyden automaattisesti tai yhteyden luominen vaatii käyttäjän toimia. Jos automaattinen palautus ei syystä tai toisesta toimi, niin mikä neuvoksi, kun yhteyttä ei voi saada käyttäjän koneelta. Ongelma ratkeaa, kun etukäteen ohjelmoi etäkoneen ilmoittamaan ip-osoitteensa sähköpostilla tai tekstiviestillä.

 Cron

 Cron on ajastuspalvelu Unix-pohjaisille käyttöjärjestelmille. Cron ajastuspalvelua käytetään hyvinkin erilaisiin tehtäviin. Tässä rajoitun kuvailemaan, kuinka voin ajastuspalvelun avulla saada Raspini lähettämään oman ip-osoiteensa sähköpostilla. Kone voisi lähettää ip-osoitteensa muullakin tavalla koneen käynnistyttyä, mutta cron voi ajastaa osoitteen lähetyksen tapahtumaan esimerkiksi kerran tunnissa. Cron suorittaa Raspissani lisäksi kahta muuta palvelua. Niistä en halua lähetystä sähköpostiini. Olen siis sulkenut niiltä sähköpostin lähetyksen. Varmaankin olen noviisi cron:in säätämisessä - niinkuin monessa muussakin asiassa. Etsin kyllä tietoja, mutta kun ei löytynyt helpolla, päätin antaa rootin lähettää tiedon ip-osoitteesta. Kaksi muuta ajastustoimintoa on säädetty tavalliselle käyttäjälle eikä niistä lähetetä sähköpostia. Siis miten root lähettää?
 
 Rootin sähköposti lähtee hakemistoon /etc/cron.hourly kirjoittamallani pienellä skriptillä kerran tunnissa. Ohjelmalla wget root kysyy palvelimelta curlmyip.com että "mikä mahtaisi olla minun ip-osoitteeni". Vastaus löytyy wget:in kirjoittamasta tiedostosta "index.html". Netistä löytyy moniakin palvelimia, jotka selvittävät käyttäjän koneen ip-osoitteen. Tämä löytämäni curlip.com näytti sopivan hyvin käyttööni. Toivottavasti palvelimen administraattori ei hermostu, kun joku hölmö tunnin välein kysyy aina samaa asiaa. Pikku tuumailun jälkeen sain aikaan toimivan skriptin tiedon lähettämiseksi:
 
#!/usr/bin/env bash
wget -o - http://curlmyip.com && ssmtp omaposti@gmail.com omaposti@gmail.com < index.html && rm index.html*
  

Postin lähetys tapahtuu ohjelmalla ssmtp, joka on konfiguroitu käyttämään gmail:ia. Lyhyt selväkielinen selitys ehkä vähän krypitiselle komentoriville: wget tallentaa Raspin ip-osoitteen tiedostoon "index.html". Ohjelma ssmtp  käyttää syötteenään tiedoston "index.html" sisältämää tietoa ja lähettää sähköpostin. Tiedostoa "index.html" ei enää tarvita ja se poistetaan. Vaikka aikaansaamani vähäinen, tunnin välein toistuva liikenne hyvin hukkuu gmail:in käsittämättömän suureen liikennemäärään, toivon ettei kukaan gmail:issa hermostu, kun joku hölmö lähettää itselleen aina tunnin välein neljä pisteellä erotettua kokonaislukua sisältävän sähköpostin. 
  

Lopuksi
 
 Jos en pidä kännykkääni äänettömällä, se kilahttelee silloin tällöin ja aina tunnin välein. Ongelmatilanteesssa Raspi lopettaa lähettelyn. Se ilmoittaa itsestään hiljaisuudella, josta erottuu kaikki "silloin tällöin" lähetetty. Jos säännölliset kilahtelut taas joskus alkavat, kyseessä oli vain sähkökatko. Alkukesän lämmössä voin regoida "kännykkähiljaisuuden" suhteelliseen tiivistymiseen tai vain antaa olla. Kaupunkiasunnon terassilla hiljaisuutta vähentää joskus meren ääniä muistuttava liikenteen taustakohina. Maalla hiljaisuus on toisenlaista. Minkälaista hiljaisuutta köyhän kivityömiehen poika, nuorena satamatyöläinen ja sepän apulainen, lopulta kirjailija ja akateemikko, mahtoikaan kuunnella joskus 1900-luvun alkupuolella. Liitän arvoisan lukijan kuunneltavaksi hänen ajatelmansa: "Pysähdy ja ole hiljaa ja kuuntele. Maailman äänet eivät ole vain pahuuden ja tyhmyyden ääniä. Kaikkialla humisevat myös hyvät äänet, mutta niitä voi kuulla vain se, joka pysähtyy kuuntelemaan." (Ajatelma kirjasta "Totuuden ja kirkkauden tiellä", WSOY 1958, Toivo Pekkanen, 1902-1957)
 
  Hannu Haapasaari
 
 

Ei kommentteja:

Lähetä kommentti