Moin, ich würd gern wissen wenn jemand meinen PC in meiner Abwesenheit hochfährt und wenn ja, für wie lange. Da ich python lern, würd ich das gern kombinieren und dort datetime objekte erhalten. Eine eventuelle manipulation von logdateien muss nicht berücksichtigt werden. Es geht um debian linux falls das wichtig ist. Man kann sich per bash anscheinend mit "last -x" Zeiten ausgeben lassen (z.B. im ISO format) und dann in python parsen, aber bevor ich diese Ausgaben auseinanderpflück wollt ich fragen, ob das der richtige Weg ist? Danke und Gruß Jesse
Jesse J. schrieb: > ich würd gern wissen wenn jemand meinen PC in meiner Abwesenheit > hochfährt und wenn ja, für wie lange. Da ich python lern, würd ich das > gern kombinieren und dort datetime objekte erhalten. Eine eventuelle > manipulation von logdateien muss nicht berücksichtigt werden. Es geht um > debian linux falls das wichtig ist. > Man kann sich per bash anscheinend mit "last -x" Zeiten ausgeben lassen > (z.B. im ISO format) und dann in python parsen, aber bevor ich diese > Ausgaben auseinanderpflück wollt ich fragen, ob das der richtige Weg > ist? Nunja, Du kannst da viele Dinge tun. Das vielleicht einfachste ist, ein Startskript anzulegen und per systemd zu aktivieren, das womöglich ungefähr so aussehen könnte:
1 | #!/usr/bin/env python
|
2 | import datetime as dt |
3 | |
4 | if __name__ == '__main__': |
5 | now = dt.datetime.now() |
6 | # jetzt was mit "now" machen...
|
Diese Daten könnten dann in eine Logdatei unter /var/log/ eingetragen werden, und es ist sicherlich eine gute Idee, dieses Skript unter einer separaten Benutzerkennung laufen zu lassen und dafür zu sorgen, daß nur dieser Benutzer die Logdatei schreiben und womöglich auch lesen kann. Wenn Du noch etwas genauer erklären könntest, was Du wirklich bewerkstelligen willst, könnten wir Dir sicherlich auch besser helfen. ;-)
Der Angreifer kann auch von USB-Stick oder DVD booten und dann deine Platte mounten. Hinterlässt keine Spuren in deinen Logdateien.
Die Frage ist: worum geht es? Wenn Fingerübung für Python: mach – löse das Problem auf möglichst viele verschiedene Arten. Vom Parsen der Ausgabe von last über direkte Auswertung der Timestamps in den Logs bis hin zu Scripten, die ihrerseits die Timestamps ins Log schreiben. Es ist nicht wichtig, wie effzient oder sinnvoll es am Ende ist – alles übt. Wenn’s aber darum geht, den Rechner zu sichern: nutze Verschlüsselung. Dann nutzt auch das Booten via USB-Stick nichts.
/proc/uptime This file contains two numbers: the uptime of the system (sec‐ onds), and the amount of time spent in idle process (seconds).
uptime schrieb: > /proc/uptime > This file contains two numbers: the uptime of the system (sec‐ > onds), and the amount of time spent in idle process (seconds). Die Daten sind nicht persistent, so dass die Antwort nicht zur im Eingangsbeitrag beschriebenen Aufgabenstellung passt: es soll festgehalten werden, ob der Rechner während der Abwesenheit gestartet worden ist.
Nur_ein_Typ schrieb: > Wenn Du noch etwas genauer erklären könntest, was Du wirklich > bewerkstelligen willst, könnten wir Dir sicherlich auch besser helfen Jack V. schrieb: > Die Frage ist: worum geht es? Ich wollte einfach bei Bedarf mir per python auflisten lassen, wann der PC die letzten Tage hoch und wieder runter gefahren wurde. In meiner Familie sind auch keine Profihacker. :) Es geht mir eher um eine Fingerübung als um eine 100% Lösung. Was ich nicht verstehe...ich habe den String aus dem Log extrahiert und kann daraus auch ein datetime objekt erzeugen, aber das scheint UTC zu sein (also mit +02:00 suffix). Wenn ich hingegen mit datetime.now() ein objekt erzeuge, wird es in lokaler Zeit angezeigt. Ich würde die Zeiten aus den ISO strings gerne auch lokal anzeigen, also hab ich folgendes versucht:
1 | dateiso = datetime.datetime.fromisoformat('2021-10-29T18:30:15+02:00') |
2 | datelocal = dateiso.replace(tzinfo=datetime.timezone.utc).astimezone(tz=None) |
3 | datenow = datetime.datetime.now() |
4 | print(datelocal) |
5 | print(datenow) |
Leider wird da immer noch UTC angezeigt:
1 | 2021-10-29 20:30:15+02:00 |
2 | 2021-10-30 16:10:24.640797 |
Was mache ich falsch?
https://pypi.org/project/psutil/ https://www.geeksforgeeks.org/python-script-to-check-pc-last-reboot-time/ import psutil import datetime # returns the time in seconds since the epoch last_reboot = psutil.boot_time() # converting the date and time in readable format print(datetime.datetime.fromtimestamp(last_reboot)) ---- >> Nunja, Du kannst da viele Dinge tun. https://www.freedesktop.org/software/systemd/python-systemd/journal.html https://www.freedesktop.org/software/systemd/python-systemd/index.html
> Man kann sich per bash anscheinend mit "last -x" Zeiten ausgeben lassen > (z.B. im ISO format) und dann in python parsen, aber bevor ich diese > Ausgaben auseinanderpflück wollt ich fragen, ob das der richtige Weg > ist? Ja, ist es. Wenn du viel Langeweile hast, kannst du dir das auch selbst auseinanderfrickeln, siehe "man 5 wtmp".
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.