Schrift
[thread]12358[/thread]

internetverbindung testen

Leser: 4


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Gast Gast
 2008-08-15 16:28
#113538 #113538
Hallo,

wie kann ich mit Perl am besten testen, ob ich online bin?
GwenDragon
 2008-08-15 16:34
#113540 #113540
User since
2005-01-17
14757 Artikel
Admin1
[Homepage]
user image
Wer ist online?
Dein PC, oder was, bitte???

Auf Win32:
Code: (dl )
perl -e "print `ping google.de` =~ /Antwort/ ? 'online' : 'offline'"
Duff
 2008-08-15 17:08
#113545 #113545
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Sollte unter linux auch funktionieren, wenn man bei ping -c3 oder sowas angibt und er nicht unendlich den ping absetzt ;-)
D'OH
Daniel
FoolAck
 2008-08-15 21:23
#113554 #113554
User since
2008-05-02
69 Artikel
BenutzerIn
[default_avatar]
Stimmt, statt Net::Ping (laut perldoc in core) nimm lieber irgendeine Executable deines OS's und parse dessen Ausgabe sprachspezifisch. (Mein Ping sagt nichts von "Antwort"....) Wenn schon mit wilden system Aufrufen, dann doch besser auf Exit-Status überprüfen...
GwenDragon
 2008-08-15 21:54
#113556 #113556
User since
2005-01-17
14757 Artikel
Admin1
[Homepage]
user image
Duff+2008-08-15 15:08:25--
Sollte unter linux auch funktionieren, wenn man bei ping -c3 ... absetzt ;-)

Ja. Tut es auch, da müssen nur andere Inhalte als Rückgabewerte oder gleich $? getestet werden;)
defun
 2008-08-15 22:40
#113557 #113557
User since
2008-07-18
28 Artikel
BenutzerIn
[default_avatar]
Google.de als Synonym für "online" zu verwenden, finde ich aber auch ein bisschen unsicher. Klar, ich verwende im Browser auch immer Google um zu checken ob ich online bin, aber was ist, wenn jemand in 10 Jahren dein Programm verwendet und es dann gar kein Google mehr gibt? Wer weiß, was die Zukunft bringt?
#Kein Kommentar
 2008-08-16 00:50
#113558 #113558
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
wer weiß schon, ob man die 5er-reihe von perl in 10 jahren noch benutzt? in der informatik ist alles vergänglich. ohne regelmäßige wartung der skripte kommt man sowieso nicht weiter. aber vielleicht sollte man eher allgemeine seiten nehmen, wie z.b. www.usa.gov oder www.uno.org
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
betterworld
 2008-08-16 04:59
#113564 #113564
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Bei mir gibt Ping nichts mit "Antwort" aus. Auch nichts vergleichbares englisches... womit schon das eigentliche Problem dieses Tests erwähnt wäre, denn man kann sich nicht auf die Locales/Spracheinstellungen des Endanwenders verlassen.
Code: (dl )
1
2
3
4
5
$ ping google.de
PING google.de (216.239.59.104) 56(84) bytes of data.
64 bytes from 216.239.59.104: icmp_seq=1 ttl=245 time=85.3 ms
64 bytes from 216.239.59.104: icmp_seq=2 ttl=245 time=87.0 ms
...


Warum nicht so:
Code: (dl )
perl -MLWP::Simple -lwe 'get("http://google.de") and print "Ich bin auf der Strecke"'

OK, ist ziemlich ineffizient, gleich ein Dokument herunterzuladen, aber es lässt sich recht schnell eintippen ;)

Wobei es vielleicht trotz der Ineffizienz ein besserer Test ist. Abgesehen davon, dass es sich nicht auf die Ausgabe eines Programms verlässt, was von System zu System und Locale zu Locale etwas anderes ausgibt, funktioniert es auch in Netzwerken, die nur über einen Proxy auf Webseiten zugreifen können und ansonsten nicht das Internet erreichen dürfen (kein Ping). Vorausgesetzt, LWP ist für den Proxy konfiguriert.
Aber hier sieht man auch wieder, dass, wie GwenDragon schon schrieb, die wirkliche Antwort eigentlich die Gegenfrage "Was ist online?" ist. Geht es um Webseiten, den DSL-Anschluss (direkt oder über Router), den Nachbarcomputer, den Gameserver, den On-/Offline-Modus in Firefox oder Outlook Express, den Status bei ICQ?
Als mein Onkel sich sein erstes Modem zugelegt hatte, hat er zu mir gesagt "Ich bin jetzt online." Leider weiß ich gerade kein Perlscript, mit dem man "online sein" in diesem Sinne testen kann.
Gast Gast
 2008-08-16 10:38
#113566 #113566
Die ping-Variante geht bei mir nicht; vielleicht liegts am UMTS.
Gast Gast
 2008-08-16 13:54
#113569 #113569
Code (perl): (dl )
perl -le 'if (system("ps -C pppd > /dev/null") == 0){print "online"} else {print "not online"}'


(für mein Umts-Modem)
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2008-08-15 16:28.