Seite 2 von 2
Re: ping mit python
Verfasst: Mittwoch 30. Mai 2018, 14:37
von egon11
Jetzt hatte ich wieder Zeit und hab mich mal wieder mit den Script beschäftigt. Ich hab es jetzt so hinbekommen, so wie ich es haben möchte.
Aber ob das Inhaltlich und fachlich in Ordnung ist, das weiß ich nicht.
Hier der Code:
Code: Alles auswählen
import subprocess
from datetime import datetime
IP = "192.168.178.1"
pr = subprocess.Popen(["ping", IP], stdout=subprocess.PIPE)
for line in pr.stdout:
data = datetime.now().strftime('%H:%M:%S--%d-%m-%Y')
ping1 = str(line)
ping = data + " " + ping1 + "\n"
txt = open("/home/matze/pingtime.txt", "a")
txt.write(ping)
txt.close()
Re: ping mit python
Verfasst: Mittwoch 30. Mai 2018, 15:09
von Sirius3
Dateien öffnet man am besten mit dem with-Statement und nutzt Stringformatierung. Da line schon ein String ist, ist das nochmalige umwandeln unnötig. Die Zeit, die Du da anhängst, ist nicht die, zu der der Ping abgesetzt wurde, sondern die, zu der Du die Zeile liest. Daher ist die Variante, wo ping die Zeitstempel schreibt generell besser.
Code: Alles auswählen
import subprocess
from datetime import datetime as DateTime
IP = "192.168.178.1"
pr = subprocess.Popen(["ping", IP], stdout=subprocess.PIPE)
with open("/home/matze/pingtime.txt", "a") as output:
for line in pr.stdout:
output.write("{:%H:%M:%S--%d-%m-%Y} {}".format(DateTime.now(), line))
output.flush()
Re: ping mit python
Verfasst: Mittwoch 30. Mai 2018, 15:40
von egon11
Danke für die schnelle Hilfe, ich habe aber das etwas abgeändert zwecks Zeilenumbruch. Kann ich das so stehen lassen?
Code: Alles auswählen
import subprocess
from datetime import datetime as DateTime
IP = "192.168.178.1"
pr = subprocess.Popen(["ping", IP], stdout=subprocess.PIPE)
with open("/home/matze/pingtime.txt", "w") as output:
for line in pr.stdout:
line = ("{:%H:%M:%S--%d-%m-%Y} {}".format(DateTime.now(), line)) + "\n"
output.write(line)
output.flush()
Re: ping mit python
Verfasst: Mittwoch 30. Mai 2018, 16:30
von Sirius3
Der Zeilenumbruch sollte schon in der Ausgabe von ping sein, Du hast also dann immer Leerzeilen; wenn Du das willst, dann so:
Code: Alles auswählen
output.write("{:%H:%M:%S--%d-%m-%Y} {}\n".format(DateTime.now(), line))
Re: ping mit python
Verfasst: Mittwoch 30. Mai 2018, 16:36
von egon11
Ja der Zeilenumbruch sollte eigentlich in der ping-Ausgabe sein, aber es schreibt "\n" statt den Zeilenumbruch durchzuführen.
Aber Danke an allen. Das Thema ist erledigt.
