Bildschirm von Benutzern abschalten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
chimera1
Beiträge: 9
Registriert: 24.11.2010 06:58:38

Bildschirm von Benutzern abschalten

Beitrag von chimera1 » 24.11.2010 07:12:34

Hallo,

Ich bin gerade in Afrika und unterrichte dort an einer Schule die Nutzung von Internet und E-Mail.
Nun lässt die Aufmerksamkeit der Schüler doch öfters etwas zu wünschen übrig.
Wir nutzen hier ein x2go System welches Debian in sich trägt.

Ich kann mittlerweile schon sämtliche Benutzer mit dem Befehlt "skill -STOP -u username" stoppen, und mit "skill -CONT -u username" wieder starten.
Nun möchte ich jedoch auch gerne den Bildschirm der User abdunkeln wenn ich ihnen etwas erkläre.

Gibt es einen Befehlt für die Konsole mit welchem man den Bildschirm von Usern sperren oder abdunkeln kann?

Diesen Befehlt "xset dpms force off" Habe ich schon versucht, das funktioniert leider nur wenn ihn der User selbst eingibt aber nicht der root Nutzer.
Ich bin root und sämtliche Schüler sind normale User.

Vielen Dank an jeden der mir bei der Lösung dieses Problems behilflich ist.

Gruß Alexander

Benutzeravatar
a6km64
Beiträge: 100
Registriert: 09.10.2007 14:37:33

Re: Bildschirm von Benutzern abschalten

Beitrag von a6km64 » 24.11.2010 10:05:42

Hi,

was spricht gegen Steckerleisten mit Schalter ?

chimera1
Beiträge: 9
Registriert: 24.11.2010 06:58:38

Re: Bildschirm von Benutzern abschalten

Beitrag von chimera1 » 24.11.2010 10:32:03

Hallo,

das wäre ziemlich aufwändig einzurichten daher würde ich eine Softwarelösung bevorzugen.

Gruß Alex

Benutzeravatar
Saxman
Beiträge: 4233
Registriert: 02.05.2005 21:53:52
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: localhost

Re: Bildschirm von Benutzern abschalten

Beitrag von Saxman » 24.11.2010 10:36:48

Klappt es wenn du den Befehl als root mit sudo -u als der jeweilige Benutzer startest?

Und im Übrigen, Willkommen im Forum.
"Unix is simple. It just takes a genius to understand its simplicity." - Dennis Ritchie

Debian GNU/Linux Anwenderhandbuch | df.de Verhaltensregeln | Anleitungen zum Review und zum Verfassen von Wiki Artikeln.

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Bildschirm von Benutzern abschalten

Beitrag von cosmac » 24.11.2010 11:10:07

hi,

vielleicht muss man xset nur sagen, welches Display es abschalten soll:

Code: Alles auswählen

xset -display :0 dpms force off
Beware of programmers who carry screwdrivers.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Bildschirm von Benutzern abschalten

Beitrag von rendegast » 24.11.2010 13:01:09

Code: Alles auswählen

ssh host [sudo] vbetool dpms [on|off]

mit einer Multihost-Löung:

Code: Alles auswählen

$ apt-cache search ssh multi | sort

capistrano - Executes commands in parallel on multiples servers
clusterssh - administer multiple ssh or rsh shells simultaneously

mssh - tool to administrate multiple servers at once
mussh - MUltihost SSH Wrapper
pssh - Parallel versions of SSH-based tools

taktuk - efficient, large scale, parallel remote execution of commands
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

chimera1
Beiträge: 9
Registriert: 24.11.2010 06:58:38

Re: Bildschirm von Benutzern abschalten

Beitrag von chimera1 » 25.11.2010 16:10:58

Saxman hat geschrieben:Klappt es wenn du den Befehl als root mit sudo -u als der jeweilige Benutzer startest?

Und im Übrigen, Willkommen im Forum.
Vielen dank für die Begrüßung.
Ich habe einmal folgendes versucht:

Code: Alles auswählen

sudo -u USERNAME top
Und es hat mir auch Prozesse angezeigt, jedoch die des Servers und nicht die des Benutzers und bei dem Versuch einen Prozess zu Killen mittels

Code: Alles auswählen

sudo -u USERNAME killall PROZESSNAME
Wurde der Prozess mit folgender Meldung nicht gestoppt:

Code: Alles auswählen

sudo: no passwd entry for killall!
cosmac hat geschrieben:hi,

vielleicht muss man xset nur sagen, welches Display es abschalten soll:

Code: Alles auswählen

xset -display :0 dpms force off
Das Habe ich versucht, hat nichts gebracht es ist nichts passiert.
rendegast hat geschrieben:

Code: Alles auswählen

ssh host [sudo] vbetool dpms [on|off]

mit einer Multihost-Löung:

Code: Alles auswählen

$ apt-cache search ssh multi | sort

capistrano - Executes commands in parallel on multiples servers
clusterssh - administer multiple ssh or rsh shells simultaneously

mssh - tool to administrate multiple servers at once
mussh - MUltihost SSH Wrapper
pssh - Parallel versions of SSH-based tools

taktuk - efficient, large scale, parallel remote execution of commands
Wie wende ich diese Befehle genau an?

Ich muss mich erst einarbeiten in die ganze ssh Sache, daher nicht wundern wenn solche Blöden Fragen bezüglich der Anwendung des Geposteten Codes kommen.

vielen Dank für die bisherigen Antworten, das Forum gefällt mir bisher echt gut.
Entschuldigung dass ich mich erst jetzt wieder gemeldet habe, es war doch etwas stressig in der letzten Zeit.

Noch einen schönen Tag.
gruß alexander

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Bildschirm von Benutzern abschalten

Beitrag von rendegast » 26.11.2010 17:26:31

Code: Alles auswählen

        ssh host [sudo] vbetool dpms [on|off]
Wie wende ich diese Befehle genau an?
Das eigentliche Kommando ist

Code: Alles auswählen

vbetool dpms off        # Abschalten
vbetool dpms on        # Anschalten
Ein Kommando für root.

Remote mit ssh ausgeführt:

Code: Alles auswählen

ssh root@host-IP_oder_host-Name   /usr/sbin/vbetool dpms off


----------------------
Ich dachte mit eigentlich, da root ja nicht ssh machen soll,
als ein Benutzer einloggen, der das sudo-paßwortlos ausführen darf:

Code: Alles auswählen

ssh Benutzer@host-IP_oder_host-Name   sudo /usr/sbin/vbetool dpms off
mit etwa sowas in den /etc/sudoers:

Code: Alles auswählen

User_Alias VBEUSER=berechtigter_Benutzer,berechtigter_Benutzer,...
Cmnd_Alias VBETOOL=/usr/sbin/vbetool dpms off
VBEUSER Hostname=NOPASSWD: VBETOOL
(Statt auf jedem Rechner "Hostname" zu setzen, kann auch "ALL" verwendet werden.)

Aber das klappt bei mir nicht(?),

Code: Alles auswählen

sudo /usr/sbin/vbetool dpms off
bleibt hängen,

Code: Alles auswählen

su -c '/usr/sbin/vbetool dpms [off|on]'
funktioniert, benötigt aber das root-Paßwort.

Da ist 'ssh root@Host /usr/bin/vbetool ...' wohl am einfachsten.




----------------------------------------------
Das andere sind Pakete, mit denen Befehle auf mehreren Rechnern gleichzeitig aufgerufen werden können.
Luxuriösere Lösungen statt

Code: Alles auswählen

HOSTLISTE="
hostname
hostname
...
"
for i in $HOSTLISTE; do
    ssh root@$i   /usr/sbin/vbetool dpms off
done
was hier wohl auch ausreicht.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

chimera1
Beiträge: 9
Registriert: 24.11.2010 06:58:38

Re: Bildschirm von Benutzern abschalten

Beitrag von chimera1 » 27.11.2010 22:00:50

@rendegast: Vielen Dank für diese hilfreiche und schnelle Antwort.
Ich werde gleich am Montag versuchen damit zu arbeiten.

Vielen Dank an jeden der sich bisher die Zeit genommen hat mir zu Helfen.

Gruß Alexander

chimera1
Beiträge: 9
Registriert: 24.11.2010 06:58:38

Re: Bildschirm von Benutzern abschalten

Beitrag von chimera1 » 01.12.2010 14:42:37

Hallo,

Ich kam nun Heute eeendlich einmal dazu das von euch vorgeschlagene auszuprobieren.
Das ganze funktioniert sogar noch viel einfacher als ich dachte.
Ich baue einfach über ssh meine Verbindung als root auf und gebe dann

Code: Alles auswählen

vbetool dpms off
ein, und schon ist bei sämtlichen usern der Bildschirm schwarz.
Ich muss gar nicht jeden einzelnen per ssh ansprechen.

Das ist super, vielen dank für die Hilfe.

Noch eine kleine Frage, weiß jemand wie man die Maus und Tastatur eingaben unterbrechen kann?
Ich habe es mit

Code: Alles auswählen

skill -STOP -u "USERNAME"
versucht, dies unterbricht sie jedoch noch so lange bis ist

Code: Alles auswählen

skill -CONT -u "USERNAME"
eingebe und dann wird alles ausgeführt was der User in der Zwischenzeit gemacht hat.

Kennt jemand vielleicht einen Besseren Befehl um Eingaben zu unterbinden?

Vielen dank für die bisherige Hilfe, ihr habt mir echt schon super weiter geholfen.

Gruß alex

Benutzeravatar
debdog
Beiträge: 652
Registriert: 11.02.2007 10:53:12
Wohnort: Do,womrkoihochdeitschko

Re: Bildschirm von Benutzern abschalten

Beitrag von debdog » 01.12.2010 16:51:39

Ahoi Alex,

spontan fällt mir dazu xinput ein:

Code: Alles auswählen

xinput set-prop [id] [prop] [1|0]
Wobei [id] für das Gerät (xinput list),
[prop] die Property von "Device enabled" (xinput list-props [id])
und [1|0] für aktivieren/deaktivieren steht.

hth
Alex
Oben gemachte Angaben, Falls nicht anderweitig Erwähnt, beziehen sich auf Debian Stable (Squeeze) amd64.
"Die Einen glauben zu Wissen, die Anderen wissen zu Glauben."

chimera1
Beiträge: 9
Registriert: 24.11.2010 06:58:38

Re: Bildschirm von Benutzern abschalten

Beitrag von chimera1 » 02.12.2010 09:48:36

@debdog: Vielen dank für die Schnelle Antwort.
Da muss ich erst einmal nachlesen wie ich die id und das prop herausbekomme.
Gibt es dafür einen Befehl oder muss man das normal wissen?

Gruß alex

Benutzeravatar
debdog
Beiträge: 652
Registriert: 11.02.2007 10:53:12
Wohnort: Do,womrkoihochdeitschko

Re: Bildschirm von Benutzern abschalten

Beitrag von debdog » 02.12.2010 11:16:26

Code: Alles auswählen

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Optical Mouse                id=8    [slave  pointer  (2)]
⎜   ↳ PS/2 Generic Mouse                        id=10   [slave  pointer  (2)]   <==
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]

$ xinput list-props 10
Device 'PS/2 Generic Mouse':
        Device Enabled (143):   1     <==
...

$ xinput set-prop 10 143 0
$ xinput list-props 10
Device 'PS/2 Generic Mouse':
        Device Enabled (143):   0
...
Oben gemachte Angaben, Falls nicht anderweitig Erwähnt, beziehen sich auf Debian Stable (Squeeze) amd64.
"Die Einen glauben zu Wissen, die Anderen wissen zu Glauben."

chimera1
Beiträge: 9
Registriert: 24.11.2010 06:58:38

Re: Bildschirm von Benutzern abschalten

Beitrag von chimera1 » 02.12.2010 12:48:45

debdog hat geschrieben:

Code: Alles auswählen

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Optical Mouse                id=8    [slave  pointer  (2)]
⎜   ↳ PS/2 Generic Mouse                        id=10   [slave  pointer  (2)]   <==
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]

$ xinput list-props 10
Device 'PS/2 Generic Mouse':
        Device Enabled (143):   1     <==
...

$ xinput set-prop 10 143 0
$ xinput list-props 10
Device 'PS/2 Generic Mouse':
        Device Enabled (143):   0
...
Hallo debdog,

Das sieht ja mal richtig gut aus.
Ich musste xinput erst einmal installieren mit

Code: Alles auswählen

apt-get install xinput
und dann ging auch der Befehl

Code: Alles auswählen

xinput list
Jedoch kam direkt darauf die Fehlermeldung:

Code: Alles auswählen

Unable to connect to X server
Muss ich noch etwas zusätzliches installieren?

Vielen dank für die Bisherige Hilfe, das war echt schon richtig super.
Gruß alexander

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Bildschirm von Benutzern abschalten

Beitrag von rendegast » 02.12.2010 20:40:56

Aus einer ssh-Session ist es wohl tricky.
'xset' hätte den Parameter '-display :0' um da eventuell einzusteuern.
'ssh [-Y|-X] xinput ...' würde das auf dem client ausgeführte xinput an den X Deiner eigenen Maschine binden (default).

Eventuell kann das X11-Forwarding ssh für das xinput auf die client-Maschine "zurückgeworfen" werden?
'man ssh':

Code: Alles auswählen

     DISPLAY               The DISPLAY variable indicates the location of the X11 server.  It is automatically
                           set by ssh to point to a value of the form “hostname:n”, where “hostname” indicates
                           the host where the shell runs, and ‘n’ is an integer ≥ 1.  ssh uses this special
                           value to forward X11 connections over the secure channel.  The user should normally
                           not set DISPLAY explicitly, as that will render the X11 connection insecure (and
                           will require the user to manually copy any required authorization cookies).

Also ungefähr so:

Code: Alles auswählen

DISPLAY=client_Maschine:0 ssh -Y client_Maschine xinput ...
?




----------------------------------------------
Auf einer lokalen virtuellen Konsole (ALT-F[1-6]) kann ich xinput abfragen:

Code: Alles auswählen

$ xinput list
Unable to connect to X server

$ DISPLAY=:0 xinput list
� Virtual core pointer                          id=2    [master pointer  (3)]
�   � Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
�   � Configured Mouse BAK                      id=6    [slave  pointer  (2)]
� Virtual core keyboard                         id=3    [master keyboard (2)]
    � Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    � Generic Keyboard BAK                      id=7    [slave  keyboard (3)]
So auch mit 'xset q' statt 'xset -display :0 q'.
Aber das klappt nicht in einer ssh-Session
(Weil X mit '-nolisten tcp' gestartet ist?).
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

chimera1
Beiträge: 9
Registriert: 24.11.2010 06:58:38

Re: Bildschirm von Benutzern abschalten

Beitrag von chimera1 » 03.12.2010 09:05:47

@rendegast: Ich bin jetzt direkt auf der Maschine, ohne ssh.
Wenn ich dort

Code: Alles auswählen

xinput list
eingebe kommt genau der gleiche Fehler.

Code: Alles auswählen

Unable to connect to X server
Was ist dieser xserver genau und wie kann ich ihn installieren?

Gruß Alex

Benutzeravatar
debdog
Beiträge: 652
Registriert: 11.02.2007 10:53:12
Wohnort: Do,womrkoihochdeitschko

Re: Bildschirm von Benutzern abschalten

Beitrag von debdog » 03.12.2010 13:31:48

chimera1 hat geschrieben:Was ist dieser xserver genau und wie kann ich ihn installieren?
Bin bisher davon ausgegangen, daß dieser läuft. Er müsste als Prozess namens "Xorg" auftauchen (ps -A | grep Xorg). Das Problem ist eher, daß ein Benutzer auf ihn zugreifen will, welcher den X-Server nicht gestartet hat.
chimera1 hat geschrieben:Ich bin jetzt direkt auf der Maschine, ohne ssh.
Wenn ich dort

Code: Alles auswählen

xinput list
eingebe kommt genau der gleiche Fehler.

Code: Alles auswählen

Unable to connect to X server
Wahrscheinlich bist Du root aber der X-Server wurde von einem anderen Benutzer gestartet.

Abhilfe könnte hier schaffen, wenn man in jeder ~/.bashrc jedes Benutzers folgendes Einträgt:

Code: Alles auswählen

export XAUTHORITY=/home/[user]/.Xauthority
Die Frage ist, ob das in einer Schule nicht zu umständlich und/oder unsicher ist.

PS: Der X-Server ist der Dienst, der die grafische Oberfläche zur Verfügung stellt. Diese dient dann als Basis für die Fenstermanager wie gnome, KDE usw.
Oben gemachte Angaben, Falls nicht anderweitig Erwähnt, beziehen sich auf Debian Stable (Squeeze) amd64.
"Die Einen glauben zu Wissen, die Anderen wissen zu Glauben."

chimera1
Beiträge: 9
Registriert: 24.11.2010 06:58:38

Re: Bildschirm von Benutzern abschalten

Beitrag von chimera1 » 03.12.2010 14:00:02

Hallo debdog,

es könnte sein das dieser xserver von dem x2go gestartet wurde und daher als root nichts daran ändern kann.
Du hast sicherlich recht dass es jetzt zu aufwändig wird, ich möchte den server hier nicht zerschießen.

Vielen Dank für deine super Hilfe, ich bin echt schon sehr viel weiter gekommen.

Falls jemandem noch eine Möglichkeit zur Lösung des Problems einfällt bitte Bescheid geben.

Gruß Alexander und ein schönes Wochenende.

P.s. Ich bin die ganze nächste Woche in einer anderen Schule 400km entfernt, daher nicht wundern dass meine Antwort eventuell erst in einer Woche kommen wird.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Bildschirm von Benutzern abschalten

Beitrag von rendegast » 03.12.2010 19:57:18

Zumindest vom Benutzer der Xsession einzugeben:

Code: Alles auswählen

xhost +local:
zBsp eingetragen in eine Datei /etc/X11/Xsession.d/99x01-LOKAL_start
(dann gilt es, wenn ein Benutzer sich eingeloggt hat),
oder (in meinem Fall) in /etc/gdm/Init/:0, dann auch beim login-Bildschirm (der X-Session des gdm).
x2go hat auf dem client ähnliche Dateien?

Das öffnet den Xserver (lokal), damit kann dann auch ein per ssh eingeloggter root (kein '-X', kein '-Y') X-Befehle absetzen:

Code: Alles auswählen

# ssh clientmaschine
...

# ps -f -C Xorg
UID        PID  PPID  C STIME TTY          TIME CMD
root      1994  1988  2 19:14 tty7     00:01:10 /usr/bin/X :0 -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7

# DISPLAY=:0 xinput list
þ Virtual core pointer                          id=2    [master pointer  (3)]
þ   þ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
þ   þ Configured Mouse BAK                      id=6    [slave  pointer  (2)]
þ Virtual core keyboard                         id=3    [master keyboard (2)]
    þ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    þ Generic Keyboard BAK                      id=7    [slave  keyboard (3)]
Voila.




--------------------
@debdog
'xinput [list-props|set-prop]' nicht mit dem xinput 1.3.0 aus lenny? Alternativen?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten