Warten auf XServer, dann 1 Screenshot/Minute

Direkte Linux-Programmierung, POSIX
Antworten
Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Warten auf XServer, dann 1 Screenshot/Minute

Beitrag von Dirty Oerti » Di Mär 15, 2011 5:15 pm

Tag :)

Ich versuche gerade, mir ein Bash-Skript zu schreiben, dass zum einen als Daemon läuft (also im Hintergrund) und gestartet wie auch gestoppt werden kann, was zum anderen aber als root laufen muss, deshalb ausgeführt werden sollte während des Startvorgangs.

Das Skript selbst ruft zur Zeit nur import aus imagemagick auf, um einen Screenshot zu erstellen. Dann wartet es 1 Sekunde und macht dann den nächsten Screenshot .. und so weiter.

Problem ist: Ich kann das Skript nicht ausführen, wenn der XServer schon läuft. Dann bekomme ich es nicht mehr als root ausgeführt. Das ist aber notwendig.
Wenn ich das Skript vor dem XServer ausführe, dann meckert import, dass es keinen XServer gibt (und daran ändert sich auch nichts, selbst, wenn der XServer dann läuft)

Wie schaffe ich es jetzt, dass mein Skript wartet, bis der XServer läuft und dann erst die Ausführung aufnimmt?

*edit* Noch was: Hat jemand eine bessere Idee als import? Das #### nimmt Konsolenfenster nicht korrekt auf. Da eine Konsole dann auf dem System eh nicht mehr zu sehen sein wird ist das nicht weiter tragisch, aber es ärgert mich trotzdem :)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Warten auf XServer, dann 1 Screenshot/Minute

Beitrag von Kerli » Di Mär 15, 2011 9:22 pm

Dirty Oerti hat geschrieben:Problem ist: Ich kann das Skript nicht ausführen, wenn der XServer schon läuft. Dann bekomme ich es nicht mehr als root ausgeführt.
Warum ist das nicht möglich? Mit einem Eintrag in der /etc/sudoers kannst du bestimmten, oder auch allen Benutzern, erlauben ein Skript mit root-Rechten auszuführen.

Außerdem, wozu braucht ein Skript zur Screenshot-Erstellung root-Rechte?
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Warten auf XServer, dann 1 Screenshot/Minute

Beitrag von Dirty Oerti » Di Mär 15, 2011 9:26 pm

Kerli hat geschrieben:Warum ist das nicht möglich? Mit einem Eintrag in der /etc/sudoers kannst du bestimmten, oder auch allen Benutzern, erlauben ein Skript mit root-Rechten auszuführen.

Außerdem, wozu braucht ein Skript zur Screenshot-Erstellung root-Rechte?
Damit es nicht getötet werden kann. Aus selbigen Grund kann ich auch das Skript selbst nicht über die /etc/sudoers für alle Benutzer (es gibt nur einen) ausführbar machen, weil dann auch die Möglichkeit besteht, das Skript zu stoppen.
Außerdem müssen die vom Skript erstellten Bilder vor dem Benutzer sicher sein.

Das Skript hat den Sinn, mit Hilfe von periodischen Screenshots Betrugsversuche zu entlarven. Bei dem System handelt es sich um ein LiveSystem, welches für Prüfungen (am eigenen Laptop) eingesetzt werden soll.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Warten auf XServer, dann 1 Screenshot/Minute

Beitrag von Kerli » Di Mär 15, 2011 9:44 pm

Wenn es periodisch sein sollte, dann würde sich ja cron anbieten. Dabei muss im Environment die Variable DISPLAY korrekt gesetzt sein. Ich bin dazu auch auf zwei interessante Forenbeiträge gestoßen:
http://studio.imagemagick.org/pipermail ... 16725.html
http://studio.imagemagick.org/pipermail ... 16886.html
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Warten auf XServer, dann 1 Screenshot/Minute

Beitrag von Dirty Oerti » Di Mär 15, 2011 11:44 pm

Tag :)
Ja, danke.
Darauf bin ich inzwischen auch schon gestoßen.
DISPLAY alleine reicht aber nicht!
XAUTHORITY muss auch gesetzt sein!

cron mag ich aber nicht so sonderlich ... ich hab das ganze jetzt in ein upstart "Skript" verwandelt und teste gerade auf meinem Rechner hier .. läuft soweit gut, hier hab ich auch keine Probleme mit schwarzen Terminals oder so.

Vielleicht mach ich daraus auch gleich ein Paket :) ^^ Muss mir nur noch ne anständige Möglichkeit überlegen, wie man es konfiguriert.

Hast du eine Idee, wie man herausfinden könnte, wo die XAUTHORITY Datei liegt?
Hm ... mir kommt gerade selber eine Idee ... evtl hat der XServer die ja geöffnet .. dann müsste lsof oder so funktionieren :)

*edit*
lsof verspottet mich ... läuft iwie nicht so wie ich will in dem Live System -,-
xauth hab ich mal versucht ... das gibt mir mit xauth info auch eine Angabe zu einer Datei aus ... aber das ist leider nur der DefaultWert...
Hilft mir also nichts, denn damit kann ich nicht mit Hilfe eines Skripts abgreifen, welche Datei der Xserver nutzt, den ich "kapern" will :)

*edit2*
Ach ... manchmal ist man doch echt blind.
Die ganze Zeit benutze ich schon das Kommando hier um zu gucken, ob ein XServer läuft, und wenn man sich die Ausgabe mal genauer anguckt, dann hilft das doch schon ungemein :D
ps aux | grep /usr/bin/X | grep -v grep hat geschrieben: root 1280 2.6 1.2 169520 48716 tty7 Ss+ Mar15 14:13 /usr/bin/X :0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-6lUx54/database -nolisten tcp vt7
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Antworten