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
Prüfen ob PC im Netzwerk gestartet ist
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Henne!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 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
>>>
Wenn du mehr brauchst -- melden.
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- User
- Beiträge: 62
- Registriert: Donnerstag 17. November 2005, 16:25
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.
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

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
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Ping ist mir auch als Erstes eingefallen als Zweites dann:
man kann auch eiene Socket Verbindung aufbauen oder mit der 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.
man kann auch eiene Socket Verbindung aufbauen oder mit der
Code: Alles auswählen
urllib2.urlopen("http://192.168.1.5")
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.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo veers!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
Ich verweise auf die ursprüngliche Frage:
Die Einschränkung auf WinXP war von Anfang an bekannt.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?
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.