Seite 1 von 1

Prüfen ob PC im Netzwerk gestartet ist

Verfasst: Freitag 3. August 2007, 20:24
von Anfänger1911
Hi!

Kann ich irgendwie von einem WinXP Rechner X prüfen ob ein WinXP Rechner Y mit bekannter IP-Adresse gerade gestartet ist bzw. ob er im Netzwerk zur Verfügung steht?

Danke im Vorraus!

MfG
Henne

Re: Prüfen ob PC im Netzwerk gestartet ist

Verfasst: Freitag 3. August 2007, 21:11
von gerold
Anfänger1911 hat geschrieben:Kann ich irgendwie von einem WinXP Rechner X prüfen ob ein WinXP Rechner Y mit bekannter IP-Adresse gerade gestartet ist bzw. ob er im Netzwerk zur Verfügung steht?
Hallo Henne!

Die Einfachste Art ist sicherlich ein PING an den gesuchten Computer. Leider ist die Ausgabe von PING deutsch. Aber wenn du nicht vor hast, dein Programm auch auf anderssprachigen Computern einzusetzen...

Code: Alles auswählen

>>> import subprocess
>>> proc = subprocess.Popen(["ping", "127.0.0.1"], stdout = subprocess.PIPE, shell = True)
>>> print "Antwort von" in proc.stdout.read() and "Computer ist im Netz" or "Computer ist offline"
Computer ist im Netz
>>> # oder so: 
>>> proc = subprocess.Popen(["ping", "127.0.0.1"], stdout = subprocess.PIPE, shell = True)
>>> if "Antwort von" in proc.stdout.read():
...     print "Computer ist im Netz"
... else:
...     print "Computer ist offline"
... 
Computer ist im Netz
>>>
Es gibt noch zwei mir bekannte PING-Implementierungen für Python. Aber die sind nicht so einfach wie das hier.

Wenn du mehr brauchst -- melden.

mfg
Gerold
:-)

Verfasst: Freitag 3. August 2007, 21:30
von Anfänger1911
Ok so hab ich mir das gedacht. Aber ich hab's jetzt doch ein bisschen anders gemacht. Mir ist eingefallen, dass ich sowieso ein File auf dem anderen Rechner habe, das abgefragt werden muss, deshalb habe ich einfach os.path.exists verwendet. Kann man das so machen oder könnte es dabei Problem geben? Soweit ich das beurteilen kann scheint es zu funktionieren. :lol:

Nochwas:
Gibt es eine Möglichkeit das so zu programmieren, dass durchgehend geprüft wird, ob der PC zur Verfügung steht? Mir fiele da jetzt nur time.sleep und eine while-Schleife ein...

MfG
Henne

Verfasst: Freitag 3. August 2007, 21:32
von Sr4l
Ping ist mir auch als Erstes eingefallen als Zweites dann:

man kann auch eiene Socket Verbindung aufbauen oder mit der

Code: Alles auswählen

urllib2.urlopen("http://192.168.1.5")
versuchen eine HTTP Verbindung herzustellen (ist ja im Prinzip das gleiche).

Natürlich führt das zum Fehler wenn kein http Server läuft, aber man
kann zwischen den Fehlern unterscheiden.

Connection Refused = Rechner ist da hat aber keine HTTP Server laufen
kein Fehler = Rechner ist da und hat eine HTTP Server

No route to host = Rechner ist nicht unter der IP verfügbar

**edit**:
@zweite Antwort von Henne:
Kommt drauf an was du machen willst, generell kannst du schon eine while-Schleife und time.sleep() verwenden, wenn dein Programm nichts besseres zutun hat kannst du das so machen. Sonst musst du dich mit Threads beschäftigen, den dein sleep legt dein Programm auf Eis und es führt während dem sleep keine Operationen aus.

Re: Prüfen ob PC im Netzwerk gestartet ist

Verfasst: Montag 6. August 2007, 13:10
von veers
Gerold, das ist unter Linux keine gute Idee, falls du da nicht mittels -c die Anzahl pings angibst läuft der Prozess für immer weiter ;)

Re: Prüfen ob PC im Netzwerk gestartet ist

Verfasst: Montag 6. August 2007, 14:36
von gerold
veers hat geschrieben:Gerold, das ist unter Linux keine gute Idee, falls du da nicht mittels -c die Anzahl pings angibst läuft der Prozess für immer weiter ;)
Hallo veers!

Ich verweise auf die ursprüngliche Frage:
Anfänger1911 hat geschrieben:Kann ich irgendwie von einem WinXP Rechner X prüfen ob ein WinXP Rechner Y mit bekannter IP-Adresse gerade gestartet ist bzw. ob er im Netzwerk zur Verfügung steht?
Die Einschränkung auf WinXP war von Anfang an bekannt.

mfg
Gerold
:-)