ich habe ein kleines Programm geschrieben, was - wenn es läuft - jede Minute die Internetverbindung prüft (anhand der Tatsache, ob google.de erreichbar ist) und das Ergebnis zusammenfassend in eine Datei schreibt. Mir ist klar, dass globale Variablen schlechter Stil sind, aber offensichtlich kann die after-Methode nicht mit Funktionen umgehen, die Parameter mitbekommen, daher habe ich keinen anderen Weg gefunden. Außerdem ist die Minutenausgabe am Ende, da die Überprüfung nur 1x pro Minute stattfindet, nicht exakt, wenn es zu häufigen Wechseln zwischen Internet und kein Internet kommt.
Inspririert wurde das ganze durch die recht instabile Verbindung hier im Wohnheim, wo mich eine solche Statistik an manchen Abenden tatsächlich interessiert.
Ich freue mich wie immer über Anregungen und Verbesserungsvorschläge.
Code: Alles auswählen
import Tkinter
import datetime
import urllib
def connected(): # prueft, ob Internetverbindung vorhanden (google.de erreichbar)
try:
urllib.urlopen("http://www.google.de")
except IOError:
return False
else:
return True
def check_inet_connection(): # prueft jede Minute die Internetverbindung, schreibt bei Aenderung Ergebnis in Datei und zaehlt Online- und Offline-Minuten
if stop == 0:
global inet
global online
global offline
global label
label.config(text = "Programm lauft...")
with open("inetconnection.txt", "a") as datei:
jetzt = datetime.datetime.now()
inet_neu = connected()
if inet_neu == True:
if inet_neu != inet:
datei.write("{}:{}:{} - Internet da\n".format(str(jetzt.hour).rjust(2,"0"), str(jetzt.minute).rjust(2,"0"), str(jetzt.second).rjust(2,"0")))
online = online + 1
else:
if inet_neu != inet:
datei.write("{}:{}:{} - Internet weg\n".format(str(jetzt.hour).rjust(2,"0"), str(jetzt.minute).rjust(2,"0"), str(jetzt.second).rjust(2,"0")))
offline = offline + 1
inet = inet_neu
root.after(60000, check_inet_connection)
def ende(): # beendet die Schleife zur Pruefung der Interntverbindung, schreibt gesamte Online- und Offline-Zeit in Datei
global stop
global label
stop = 1
jetzt = datetime.datetime.now()
with open("inetconnection.txt", "a") as datei:
datei.write("{}:{}:{} - Ende\n".format(str(jetzt.hour).rjust(2,"0"), str(jetzt.minute).rjust(2,"0"), str(jetzt.second).rjust(2,"0")))
datei.write("online: {} Minuten, offline: {} Minuten\n".format(online, offline))
label.config(text = "Programm kann geschlossen werden")
stop = 0
root = Tkinter.Tk()
def main():
with open("inetconnection.txt", "a") as datei: # schreibt Datum und Uhrzeit des Programmstarts in Datei, ausserdem, ob Internetverbindung vorhanden
global inet
global online
global offline
jetzt = datetime.datetime.now()
datei.write("{}.{}.{}".format(jetzt.day, jetzt.month, jetzt.year) + "\n")
inet = connected()
if inet == True:
datei.write("{}:{}:{} - Internet da\n".format(str(jetzt.hour).rjust(2,"0"), str(jetzt.minute).rjust(2,"0"), str(jetzt.second).rjust(2,"0")))
online = 1
offline = 0
else:
datei.write("{}:{}:{} - Internet weg\n".format(str(jetzt.hour).rjust(2,"0"), str(jetzt.minute).rjust(2,"0"), str(jetzt.second).rjust(2,"0")))
online = 0
offline = 1
menu = Tkinter.Menu(root) # Erstellen der GUI
root.config(menu=menu)
global label
button = Tkinter.Button(text="Quit", command=ende)
button2 = Tkinter.Button(text="Start", command=check_inet_connection)
button2.pack()
button.pack()
label = Tkinter.Label(root, text="bitte auf Start klicken")
label.pack()
root.mainloop()
if __name__ == "__main__":
main()