Kann die x11vnc-Ausgabe nicht loswerden

Kann die x11vnc-Ausgabe nicht loswerden

Ich verwende ein Ubuntu-System, auf dem ein Touchscreen installiert ist :0. Ich wollte diesen Touchscreen von Windows aus fernsteuern können, also habe ich x11vnc eingerichtet. Das funktioniert super. Aber hier ist das Setup:

Ich habe zwei Benutzer (außer root). Einen eingeschränkten Benutzer (grundsätzlich keine Berechtigungen und kein Passwort), der sich automatisch am Touchscreen anmeldet, und einen vollständig konfigurierten Benutzer mit einem komplexen Passwort, Sudo-Berechtigung usw. Ich möchte x11vnc eigentlich nur starten, wenn sich der eingeschränkte Benutzer anmeldet (der Touchscreen wird aktiv), also setze ich den Befehl x11vnc -loop &ans Ende der Datei /home/restricted/.profile. Funktioniert einwandfrei. Beachten Sie jedoch, dass es sich um einen Hintergrundprozess handeln muss, da dieser Benutzer später andere Befehle ausführen muss (vor dem menschlichen Benutzer verborgen).

Mein Problem ist, dass die Ausgabe von x11vnc sehr laut ist. Vor allem, wenn Sie kein Passwort verwenden (was ich nicht tue) und es sich um eine Schleife handelt, sodass es sich immer wieder wiederholt. Normalerweise wäre das kein Problem, aber nicht nur funktioniert die Umleitung der Ausgabe nach /dev/null nicht (siehe unten), sondern die Ausgabe erscheint auch auf dem Terminal des anderen Benutzers, wenn ich mich per SSH anmelde (was wirklich ärgerlich ist, weil ich dieses Konto für Wartungsarbeiten verwende und es unmöglich ist, etwas zu tun, wenn Ihr Bildschirm mit der Ausgabe eines Hintergrundprozesses gefüllt wird). Hier ist ein Beispiel für die Ausgabe, die ich erhalte:

--- x11vnc loop: 1 ---

--- x11vnc loop: waiting for: 1551

###############################################################
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
#@                                                           @#
#@  **  WARNING  **  WARNING  **  WARNING  **  WARNING  **   @#
#@                                                           @#
#@        YOU ARE RUNNING X11VNC WITHOUT A PASSWORD!!        @#
#@                                                           @#
#@  This means anyone with network access to this computer   @#
#@  may be able to view and control your desktop.            @#
#@                                                           @#
#@ >>> If you did not mean to do this Press CTRL-C now!! <<< @#
#@                                                           @#
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
#@                                                           @#
#@  You can create an x11vnc password file by running:       @#
#@                                                           @#
#@       x11vnc -storepasswd password /path/to/passfile      @#
#@  or   x11vnc -storepasswd /path/to/passfile               @#
#@  or   x11vnc -storepasswd                                 @#
#@                                                           @#
#@  (the last one will use ~/.vnc/passwd)                    @#
#@                                                           @#
#@  and then starting x11vnc via:                            @#
#@                                                           @#
#@      x11vnc -rfbauth /path/to/passfile                    @#
#@                                                           @#
#@  an existing ~/.vnc/passwd file from another VNC          @#
#@  application will work fine too.                          @#
#@                                                           @#
#@  You can also use the -passwdfile or -passwd options.     @#
#@  (note -passwd is unsafe if local users are not trusted)  @#
#@                                                           @#
#@  Make sure any -rfbauth and -passwdfile password files    @#
#@  cannot be read by untrusted users.                       @#
#@                                                           @#
#@  Use x11vnc -usepw to automatically use your              @#
#@  ~/.vnc/passwd or ~/.vnc/passwdfile password files.       @#
#@  (and prompt you to create ~/.vnc/passwd if neither       @#
#@  file exists.)  Under -usepw, x11vnc will exit if it      @#
#@  cannot find a password to use.                           @#
#@                                                           @#
#@                                                           @#
#@  Even with a password, the subsequent VNC traffic is      @#
#@  sent in the clear.  Consider tunnelling via ssh(1):      @#
#@                                                           @#
#@    http://www.karlrunge.com/x11vnc/#tunnelling            @#
#@                                                           @#
#@  Or using the x11vnc SSL options: -ssl and -stunnel       @#
#@                                                           @#
#@  Please Read the documention for more info about          @#
#@  passwords, security, and encryption.                     @#
#@                                                           @#
#@    http://www.karlrunge.com/x11vnc/faq.html#faq-passwd    @#
#@                                                           @#
#@  To disable this warning use the -nopw option, or put     @#
#@  'nopw' on a line in your ~/.x11vncrc file.               @#
#@                                                           @#
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
###############################################################
20/05/2016 10:53:18 x11vnc version: 0.9.13 lastmod: 2011-08-10  pid: 1551
20/05/2016 10:53:18 XOpenDisplay("") failed.
20/05/2016 10:53:18 Trying again with XAUTHLOCALHOSTNAME=localhost ...
20/05/2016 10:53:18
20/05/2016 10:53:18 *** XOpenDisplay failed. No -display or DISPLAY.
20/05/2016 10:53:18 *** Trying ":0" in 4 seconds.  Press Ctrl-C to abort.
20/05/2016 10:53:18 *** 1 2 3 4
Invalid MIT-MAGIC-COOKIE-1 key20/05/2016 10:53:22 XOpenDisplay(":0") failed.
20/05/2016 10:53:22 Trying again with XAUTHLOCALHOSTNAME=localhost ...
Invalid MIT-MAGIC-COOKIE-1 key20/05/2016 10:53:22 XOpenDisplay(":0") failed.
20/05/2016 10:53:22 Trying again with unset XAUTHLOCALHOSTNAME ...
Invalid MIT-MAGIC-COOKIE-1 key20/05/2016 10:53:22

20/05/2016 10:53:22 ***************************************
20/05/2016 10:53:22 *** XOpenDisplay failed (:0)

*** x11vnc was unable to open the X DISPLAY: ":0", it cannot continue.
*** There may be "Xlib:" error messages above with details about the failure.

Some tips and guidelines:

** An X server (the one you wish to view) must be running before x11vnc is
   started: x11vnc does not start the X server.  (however, see the -create
   option if that is what you really want).

** You must use -display <disp>, -OR- set and export your $DISPLAY
   environment variable to refer to the display of the desired X server.
 - Usually the display is simply ":0" (in fact x11vnc uses this if you forget
   to specify it), but in some multi-user situations it could be ":1", ":2",
   or even ":137".  Ask your administrator or a guru if you are having
   difficulty determining what your X DISPLAY is.

** Next, you need to have sufficient permissions (Xauthority)
   to connect to the X DISPLAY.   Here are some Tips:

 - Often, you just need to run x11vnc as the user logged into the X session.
   So make sure to be that user when you type x11vnc.
 - Being root is usually not enough because the incorrect MIT-MAGIC-COOKIE
   file may be accessed.  The cookie file contains the secret key that
   allows x11vnc to connect to the desired X DISPLAY.
 - You can explicitly indicate which MIT-MAGIC-COOKIE file should be used
   by the -auth option, e.g.:
       x11vnc -auth /home/someuser/.Xauthority -display :0
       x11vnc -auth /tmp/.gdmzndVlR -display :0
   you must have read permission for the auth file.
   See also '-auth guess' and '-findauth' discussed below.

** If NO ONE is logged into an X session yet, but there is a greeter login
   program like "gdm", "kdm", "xdm", or "dtlogin" running, you will need
   to find and use the raw display manager MIT-MAGIC-COOKIE file.
   Some examples for various display managers:

     gdm:     -auth /var/gdm/:0.Xauth
              -auth /var/lib/gdm/:0.Xauth
     kdm:     -auth /var/lib/kdm/A:0-crWk72
              -auth /var/run/xauth/A:0-crWk72
     xdm:     -auth /var/lib/xdm/authdir/authfiles/A:0-XQvaJk
     dtlogin: -auth /var/dt/A:0-UgaaXa

   Sometimes the command "ps wwwwaux | grep auth" can reveal the file location.

   Starting with x11vnc 0.9.9 you can have it try to guess by using:

              -auth guess

   (see also the x11vnc -findauth option.)

   Only root will have read permission for the file, and so x11vnc must be run
   as root (or copy it).  The random characters in the filenames will of course
   change and the directory the cookie file resides in is system dependent.

See also: http://www.karlrunge.com/x11vnc/faq.html

 --- x11vnc loop: sleeping 2000 ms ---


 --- x11vnc loop: 2 ---

Und das wiederholt sich immer wieder.

Es schreit mich an, weil ich das Display nicht öffnen kann, aber es funktioniert. Ich vermute, das liegt daran, dass der eingeschränkte Benutzer diesen Befehl bereits ausgeführt hat und die Verbindung problemlos hergestellt wurde, aber jetzt versucht dieser Benutzer dies ebenfalls, sodass keine Verbindung hergestellt werden kann.

Warum passiert das? Da gibt es offensichtlich eine Lücke in meinem Verständnis. Hier sind die verschiedenen Dinge, die ich versucht habe:


Umleitung der Ausgabe nach /dev/null

An derselben Stelle /home/restricted/.profilehabe ich versucht, den vorhandenen Befehl x11vnc -loop &durch zu ersetzen x11vnc -loop > /dev/null 2>&1 &.

Dies hatte keinerlei Auswirkungen, die Ausgabe befand sich weiterhin auf dem Terminal des anderen Benutzers und verschwand (offensichtlich) nicht.


Ausführen des Befehls mit „nohup“

Wieder in /home/restricted/.profilehabe ich versucht, den vorhandenen Befehl x11vnc -loop &durch zu ersetzen nohup x11vnc -loop &.

Auch dies hatte keinerlei Auswirkungen. Die Ausgabe war immer noch da. Nohup hat nicht einmal eine nohup.out-Datei erstellt. Zumindest konnte ich sie nicht finden.

Der Vollständigkeit halber habe ich es auch nohup x11vnc -loop > /dev/null 2>&1 &noch einmal versucht, es hat sich nichts geändert.


x11vnc als Daemon starten

Hier wurde mir klar, dass ich etwas falsch gemacht hatte. Ich dachte, es lag vielleicht daran, dass /home/restricted/.profilees der falsche Ort war, um so etwas abzulegen. Also erstellte ich ein Skript, /etc/init.ddas beim Booten ausgeführt werden sollte, und erstellte den Link update-rc.dnach dem Beispiel der Skelettdatei.

Auch dieses Mal funktionierte x11vnc, aber die Ausgabe erfolgte auf allen meinen Terminals.


x11vnc wird im Bildschirm gestartet

Mein letzter Versuch, dieses Problem zu beheben, bestand darin, den Befehl in einer Bildschirmsitzung auszuführen. Normalerweise behebt Screen solche Probleme für mich ... Aber diesmal nicht.

In /home/restricted/.profilehabe ich ersetzt x11vnc -loop &durchscreen -d -R x11vnc x11vnc -loop

Dieses Mal funktionierte x11vnc nicht mehr (Verbindung über Windows-Client nicht möglich), aber die Ausgabe war IMMER NOCH auf allen Terminals vorhanden.


Auch hier gibt es offensichtlich etwas, das ich weder bei x11vnc noch beim Starten eines Prozesses beim Booten verstehe.

Wie Sie vielleicht aus dem Obigen ersehen konnten, beschäftige ich mich schon seit einiger Zeit mit dieser Fehlerbehebung und kann im Internet nichts anderes dazu finden. Hilfe hier wäre also großartig. Vielen Dank im Voraus.

Antwort1

Die >&Umleitung der Ausgabe hat bei mir funktioniert.

x11vnc -repeat -noxdamage -ncache 10 -forever -loop -rfbauth &> x11vnc.log

verwandte Informationen