Ping mit Millisekunden-Timeout

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Moneyman
User
Beiträge: 8
Registriert: Dienstag 12. Juni 2012, 10:02

Ich suche irgendwie vergebens nach einer Möglichkeit auf Windows und Linux eine Pingabfrage an verschiedene Adressen mit einem Timeout von weniger als eine Sekunde zu schicken. Auf Windows funktioniert das ja sogar standardmäßig über die Eingabeaufforderung. Bei Linux ist es jedoch auf Sekunden beschränkt (bzw habe ich nichts anderes gefunden).

Auch ping.py bietet nur Timeouts in Sekunden an...

Kennt ihr eine Methode wie ich den Timeout im Millisekundenbereich setzen kann?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Ich habe den Code von ping.py nur kurz überflogen, aber für mich sieht das nicht nach einer Einschränkung auf ganze Sekunden aus.
Das Leben ist wie ein Tennisball.
Moneyman
User
Beiträge: 8
Registriert: Dienstag 12. Juni 2012, 10:02

Ja da magst du recht haben. Ich habe sogar mal irgendwo gelesen, dass Millisekunden gehen sollen.

Ich habe diesen Befehl einfach mal ausprobiert und mit dem Timeout rumgespielt.

Code: Alles auswählen

print ping.do_one('122.0.0.2', timeout=3, psize=16)
Leider braucht er ca. 3 Sekunden bis eine Ausgabe erfolgt. Setzt man den Timeout höher so dauert es dementsprechend länger
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Es ist ja nun auch wirklich keine Überraschung, wenn du "timeout=3" setzt, dass dann ggf. 3 Sekunden gewartet wird. Warum übergibst du nicht einfach 3 ms als "timeout=0.003"?

Edit: Was ist eigentlich der Grund, dass du ein kürzes Timeout brauchst? Vielleicht lässt sich hier noch optimieren. Evtl. einfach durch Threads, falls du eine große Menge an zu testenden Adressen hast.
Das Leben ist wie ein Tennisball.
Moneyman
User
Beiträge: 8
Registriert: Dienstag 12. Juni 2012, 10:02

Ok ich sage nichts mehr. Ich hatte 0.X ausprobiert aber da nicht merkbar einen Unterschied festgestellt. Auf 0.00X bin ich nicht gekommen :oops:

Ja ich habe ca. 700 hosts die ich so abfragen will. Mit Threads arbeite ich schon, ich wollte lediglich die dauer der einzelnen Threads so gering wie möglich halten.

Danke für den Tip ;)
overflow
User
Beiträge: 11
Registriert: Sonntag 30. Dezember 2012, 00:18

Hallo,

vorab ich bin kein Python Experte

Der Thread ist zwar etwas älter, aber dennoch möchte ich noch kurz etwas beitragen.
Unter unixoden Systemen kannst du die Intervalle für das Tool "ping" mit dem Schalter "-i" angeben.

Standardmäßig braucht man dafür root Rechte.

Ich weiß zwar nicht, was du vorhast, aber je mehr Pakete du in einer bestimmten Zeit verschickst,
desto "lauter" wird es im Netzwerk.

Einem "gutem" Administrator wird der "Lärm" schnell auffallen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

overflow hat geschrieben:Standardmäßig braucht man dafür root Rechte.
Das stimmt so nicht, ich hab das jetzt eben als ganz normaler User ausprobiert und es funktioniert ohne root-Rechte genauso.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

man ping hat geschrieben: -i interval
Wait interval seconds between sending each packet. The default
is to wait for one second between each packet normally, or not
to wait in flood mode. Only super-user may set interval to val-
ues less 0.2 seconds.

Code: Alles auswählen

$ ping www.google.de -i 0.1
PING www.google.de (173.194.69.94) 56(84) bytes of data.
ping: cannot flood; minimal interval, allowed for user, is 200ms
Zumindest unter einem CentOS 5.x
BlackJack

Unter Ubuntu 12.04 und RaspBMC (Raspbian (Debian Wheezy)) geht es auch nicht als normaler Benutzer.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hmm interessant, in der Manpage habe ich geschaut, allerdings ist der von Arch Linux gelieferten Manpage von ping die ``-i``-Option gar nicht erst dokumentiert (also nur in der Aufrufsyntax, sonst nicht).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
overflow
User
Beiträge: 11
Registriert: Sonntag 30. Dezember 2012, 00:18

Leonidas hat geschrieben:Hmm interessant, in der Manpage habe ich geschaut, allerdings ist der von Arch Linux gelieferten Manpage von ping die ``-i``-Option gar nicht erst dokumentiert (also nur in der Aufrufsyntax, sonst nicht).
Das ist der Unterschied zwischen Linux und Unix ;)
http://linux.die.net/man/8/hping3

@Leonidas: Meine Aussage beruhte sich auf unixoide Systeme wie openBSD.
Antworten