#netin testaaminen
ping -c 1 google.com && luku=5
if [ $luku = 0 ]
then
notify-send "Tarkista nettiyhteys"
fi
Joitakin kommentteja:
1) Yksi pingi epäonnistuu satunnaisesti mikä on normaalia. Tuohon kannattaisi tehdä uudelleenyritysrakenne jolloin yhteyden toiminnan arviointi on varmempaa. Sellainen on valmiiksi rakennettu esimerkiksi "mondev" skriptiini joka on tarkoitettu monitoroimaan nettiyhteyden tai jonkin laitteen toimintaa:
www.homelinuxpc.com/download/mondev.bash Siitä saat helposti kopioitua idean tai koko hoidon.
2) "exit" -komennolla pääset heti ulos jos jokin epäonnistuu ilman että tarvitsee "valua läpi" kaikesta perässäolevasta koodista. Lisäksi on hyvä idea kirjoittaa tuon "exit" komennon perään numero joka ilmaisee vikatilannetta. Yleinen tapa on laittaa siihen ykkönen ellei haluta luokitella tarkemmin mikä epäonnistui eli "exit 1". Jos haluat luokitella tapahtuneen virheen tarkemmin niin käytä numeroita välillä 64...113, niitä ei ole varattu erikoistarkoituksiin:
http://tldp.org/LDP/abs/html/exitcodes.htmlTuosta numerosta käytetään usein nimitystä "paluukoodi" (exit code). Tuo juontaa siitä että jos toinen ohjelma kutsuu tekemääsi ohjelmaa niin sille menee virhetilanteessa juuri tuo numero takaisin jolloin se toinen ohjelma voi päättää koodin perusteella mitä tehdään seuraavaksi. Numero "0" tarkoittaa aina että onnistui eli nolla menee takaisin silloin.
3) Jos haluat kirjoittaa "then" sanan vielä samalle riville niin puolipste ja välilyönti:
if [ testi ]; then
tehdään_jotain
fi
4) Tuo "&&" on kätevä "if...then" testin korvaaja. Joskus kuitenkin "else" selventää koodin ideaa:
if [ testi ]; then
tehdään_jotain_1
else
tehdää_jotain_2; exit 1
fi
Tuossa yllä selvästi "else" haara on se mitä tehdään virhetilanteessa eli poistutaan ja ilmoitetaan koodilla "1" että suteen meni.
Komentorivilläkin voit kokeilla onnistuiko viimeisin komento:
echo $?
Kertoo nollaa jos onnistui, jotain muuta jos ei. Kokeilepa vaikka
ls tiedoston_nimi_jota_ei_ole
ja siihen heti perään kokeilet
echo $?
Itse viesteistä, jos ajat skriptiä jossain muualla kuin käyttäjä omassa päätteessä tms. niin tulee varmaan mietittäväksi miten ne viestit saadaan menemään oikeaan osoitteeseen. En tiedä vastausta, pitäisi ottaa aikaa ja kokeilla hieman miten tuo menee.