Sephiroth hat geschrieben:Zu Masaru:
Wenn ich dein Script ausführe, hängt sich mein Rechner auf und ich darf neustarten...O.o^^
Da waren auch ein paar Fehler noch drinnen, die ich mal korrigiert und bei mir getestet habe. Sollte bei dir auch funktionieren
.
Sephiroth hat geschrieben:... zu dieser finally Option und so kommt er garnicht ...
Keine Sorge, bei meinem Codebeispiel wird Dein Problem nicht übergangen. Das "finally" meint, dass nach dem Öffnen und Schreiben des Zeitstempels in Zeile 9 und 11, egal ob ein Fehler passiert oder nicht, diese Datei auch wieder geschlossen wird.
Dadurch, dass dieser Vorgang
innerhalb der while-Schleife liegt wird der Log-Eintrag und das öffnen der Datei immer nur dann gemacht, wenn es nötig ist.
Das permanente "offen" halten des Dateihandles bringt Dir nämlich keinen Vorteil. Wenn jemand den Rechner runterfährt, bekommt Dein Script es werder mit einem offenen Dateihandle noch mit einem wiederholten Öffnen, Schreiben, Lesen Modell hin
.
Was für Dich vielleicht noch zusätzlich viel Interessanter wäre, ist mitzuloggen wenn sich ein Benutzer an deinem System anmeldet (Windows/KDE/etc.-Login).
Dies könntest Du mit einem Script lösen welches z.B. Windows über ein Batch aus dem Autostart Ordner gestartet wird, und Zeit, sowie aktuellen Benutzer loggt.
Ich würde in Deinem Falle den Personen in meinem häuslichen Umfeld eigene Accunts mit Passwörtern in meinem System anlegen, womit man genau bestimmen könnte wer sich wann eingeloggt hat.
Ein solches Script könnte z.B. sein:
Code: Alles auswählen
import datetime
import getpass
import sys
def log_systemstart():
zeitstempel = datetime.datetime.now().strftime("%d.%m.%Y %H:%M:%S")
benutzer = getpass.getuser()
try:
inp = open('systemstart.log', 'a')
try:
inp.write("[%s] Benutzer '%s' hat System gestartet" % (zeitstempel, benutzer))
finally:
inp.close()
except (OSError, IOError), error:
print "FEHLER: konnte logeintrag nicht schreiben: %s" % error
sys.exit(2)
if __name__ == '__main__':
log_systemstart()