Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Tha-Fox - 01.06.11 - klo:00.59
-
Ongelma on seuraava? Sukulaiseni tarjoaa palvelimelleni konesalipaikan. (Suomeksi vanha läppärin raato pöydän kulmalla.) Työnnän sinne varmistukset verkon yli ssh:lla. Sikäläinen ADSL-modeemi (A-Link RR24AP) päättää aina silloin tällöin heittäytyä hankalaksi, mahtaako ARP-taulu täyttyä vai mitä lie. Joka tapauksessa liikenne ei tämän jälkeen kulje ilman virtaresettiä modeemille. Ja tästä alkavat ongelmat...
Kone saa normaalisti privaattiosoitteen 10-verkosta (NAT käytössä) ja ifconfig näyttää osoitetta tältä alueelta. Edellisen virtaresetin jälkeen kone oli pari päivää ilman verkkoyhteyttä. Kun huomasin asian, pyysin ensimmäisenä tarkistamaan paikallisesti koneen ip:n. Jostain syystä se oli 80-alkuinen ja sama kuin mitä ADSL-modeemin ulkoinen ip oli ollut pari päivää sitten ennen virtaresettiä. Verkkoliitännät käytettiin alhaalla käskyttämällä sudo /etc/init.d/networking restart
ja tämän jälkeen kone sai jälleen osoitteen 10-verkosta. Mainittakoon, että NATin toimimiseksi sisäverkon IP on sidottu koneen MAC-osoitteeseen.
Kysymys kuuluu, onko mitään keinoa saada kone tajuamaan, että ADSL-modeemi (alias DHCP-serveri) on käynyt alhaalla ja osoite pitäisi kysellä uudestaan? Purkkavirityksenä voisin ajaa verkkoliitännät cronilla alas vaikka joku yö, mutta onko tähän elegantimpaa ratkaisua? A-Linkin päivitys olisi tietysti yksi vaihtoehto, mutta se asia ei ole minun päätettävissäni.
-
Entä jos laitat rootin croniin (vaikka miten usein, tunnin, vartin, minuutin välein?)
ping -c 1 osoite &> /dev/null || /etc/init.d/networking restart
OR-operaattori (eli ||) testaa, onko edes jompi kumpi sen puolista tosi. Se on myös sen verran optimoiva, ettei se turhaan suorita ensimmäistä, jos ensimmäinen ehto on jo tosi. Ohjelmien tapauksessa paluuarvo 0 on katsotaan (vähän epäloogisesti) todeksi, muut epätodeksi. Tässä ping palauttaa nollan, jos pingaus onnistuu. Jos ei onnistu, tulee jotakin muuta, ja jälkimmäinen puolisko suoritetaan. (itse OR-operaattorin lopullisella arvollahan tässä ei tehdä mitään).
Osoite voinee tässä olla vaikka modeemin osoite tai sitten jonkin internetissä oleva, kuten ping.funet.fi.