Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: odysseus - 17.06.13 - klo:10.57
-
Eli nyt tuli eteen semmoinen tilanne, jossa pitäisi ohjelmallisesti selvittää onko koneessa nettiyhteyttä vai ei.
Tämä mieluiten C:llä tai PHP:llä, kun noilla on jo softaa tehty ja ei viitsisi ottaa muita tekniikoita "sotkemaan".
Tuleeko mieleen mikä olisi paras tapa selvittää homma? Ei viitsisi alkaa mitään socketteja väsäämään C:llä, eli saako tuon parametrin jostain koneelta kaivetua helposti.
Kyseessä on joko LAN tai WLAN -yhteys (jos mokkulan saa tietää samalla, niin OK).
-
Pari vaihtoehtoa mitkä tulevat ekana mieleen:
1) ping -c1 google.fi
-> jos vastaa = netti
2) tutkii /proc/net
-> sieltä varmaankin löytyy tieto mitkä interfacet ovat ylhäällä ja online
-
Rupesin ajattelemaan samaa, eli alunperin liian vaikeasti.
Tässä kyseisessä tapauksessa kun pitää;
a) hakea data netistä
tai jos ei onnistu
b) hakea se kovalevyltä
No, HÖ! Ratkaisuhan on kokeilla "wget" tai "fopen" (PHP) suoraan ja jos se ei onnistu, niin sitten lokaali!
Siis ratkasitu, mutta jos joku saa tuohon vastauksen, että millä sen netin tunnistaa koneelta muuten (miten esim. network-applet huomaa kun kaapeli on irti), niin saa laittaa perään.
-
Yksi havainto mutta ei toimivuustakuuta: Katsoo ARP -tietoja. Jos näkyy numeroita /proc/ net/arp tiedostossa niin verkko ylhäällä. Pikakoe bash: llä
grep -q [[:digit:]] /proc/net/arp
echo $?
0
Kun verkon tiputtaa niin antaa paluukoodin 1. En tosin kokeillut tuota kaapelin irroitusta kun olen wlan: in varassa tällä hetkellä vaan sammutin verkkoyhteyden Network Managerista kokeeksi. Ehkä joku keksii paremmankin paikan verkon statuksen tunnistamiseen ?