Автор Тема: Как добавить в автозагрузку x11vnc  (Прочитано 5498 раз)

Оффлайн rabochyITs

  • Давно тут
  • **
  • Сообщений: 242
  • Евгений
Не понятно почему не срабатывает строка в файле rc.local
-rwxr-xr-x   1 root root   165 апр 15 10:29 rc.local
вот такого вида:
#!/bin/sh
/usr/bin/x11vnc -dontdisconnect -display :0 -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth /root/.vnc/passwd

под рутом работает

[root@alt7hv ~]# /etc/rc.d/rc.local
PORT=5900
[root@alt7hv ~]#

а до входа не запускается.
Отдельно в rc.local запускается 3proxy ( скрипт /etc/rc.d/init.d/3proxy), а x11vnc нет и если их поместить в один файл падают (не запускаются) оба.

[root@alt7hv ~]# /etc/rc.d/init.d/3proxy start
Starting 3proxy: done.
[root@alt7hv ~]#


[root@alt7hv ~]# ls -al /etc/rc.d/init.d/3proxy
-rwxr-xr-x 1 root root 748 май 18  2013 /etc/rc.d/init.d/3proxy
[root@alt7hv ~]#


полный вид rc.local:
cat /etc/rc.d/rc.local
#!/bin/sh
#
#
# Source function library.
/etc/init.d/3proxy start
/usr/bin/x11vnc -dontdisconnect -display :0 -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth /root/.vnc/passwd
На шестом кентавре все работало. Сейчас у меня 7 (systemd) - может systemd работает иначе? Куда костыль вставить?
« Последнее редактирование: 29.04.2016 16:25:05 от rabochyITs »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 16 472
    • Домашняя страница
    • Email
На шестом кентавре все работало. Сейчас у меня 7 (systemd) - может systemd работает иначе? Куда костыль вставить?
В systemd нужно делать свою службу. Он уже не понимает rc.local.
Андрей Черепанов (cas@)

Оффлайн rabochyITs

  • Давно тут
  • **
  • Сообщений: 242
  • Евгений
вот примерный файл .service
http://vladimir-stupin.blogspot.ru/2013/02/systemd-2-service.html
[Unit]
Description=openntpd
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/ntpd -dsf /etc/openntpd/ntpd.conf
ExecStartPost=/bin/chown ntpd /var/lib/openntpd/ntpd.drift
ExecStop=/sbin/hwclock -w

[Install]
WantedBy=multi-user.target

После какого сервиса After нужно запускать x11vnc?
Вообще, а где находится конфиг запуска mate оболочки и куда можно воткнуть строчку запуска x11vnc в уже готовый скрипт запускаемый systemd?
Или осваивать написание сервисных файлов?
 

Оффлайн rabochyITs

  • Давно тут
  • **
  • Сообщений: 242
  • Евгений
Частично нашел ответ здесь http://yar4e-it.blogspot.ru/2014_04_01_archive.html для Alt Linux P7 TDE
В моем случае Alt Linux7 кентавр на systemd.
1. создаем загрузочный скрипт для x11vnc
touch /usr/bin/startvncserver
делаем исполняемым, только не знаю, нужно ли в этом случае
chmod +x /usr/bin/startvncserver

pluma /usr/bin/startvncserver - открываем блокнот и забиваем сам скрипт инициализации.

#!/bin/bash

#sleep 5s
#/usr/bin/x11vnc -noipv6 -shared -forever -passwdfile /etc/x11vncpass -bg -display :0 -auth /var/run/lightdm/root/*

/usr/bin/x11vnc -dontdisconnect -display :0 -auth /var/run/lightdm/root/:0 -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth /etc/x11vncpass
Работают оба первый от автора я закоментировал, свой дополнил.
Предварительно подготовил пароль: x11vnc -storepasswd  /etc/x11vncpass
и по совету автора (ps aux | grep X) выбрал свой путь к файлу авторизации X сервера
root      3756  0.8  0.9 134660 33372 tty7     Ssl+ 14:12   0:00 /usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch

2. Готовим service файл:
pluma /etc/systemd/system/startvncserver.service
с таким содержимым
[Unit]
Description=Start vnc server /usr/bin/startvncserver

[Service]
Type=oneshot
ExecStart=/usr/bin/startvncserver
RemainAfterExit=yes

[Install]
WantedBy=graphical.target

с блога автора этого скрипта:
Где, Description=Start vnc server /usr/bin/startvncserver — Описание сервиса.
Type=oneshot — Задание метода окончания периода запуска сервиса. Oneshot означает что действие, выполняемое сервисом должно быть окончено до запуска следующего сервиса.
RemainAfterExit=yes — Используется в связке с предыдущей опцией и говорит systemd о том, что данный сервис хоть и завершит свою работу после выполнения скрипта, но должен оставаться со статусом active.
ExecStart=/usr/bin/startvncserver — Путь к скрипту для выполнения.
WantedBy=graphical.target — Параметр, который даёт понять systemd, на какой стадии загрузки системы нужно выполнить данный сервис.  multi-user.target соответствует init3. graphical.target соответствует init5.

Для запуска, остановки, перезапуска, просмотра статуса  и включения в автозгрузку сервиса (и соответственно нашего скрипта), используются стандартные команды systemd.
Запустить:

    [root@comp-core-2-81b58d system]# systemctl start startvncserver.service

Остановить:

    [root@comp-core-2-81b58d system]# systemctl stop startvncserver.service

Перезапустить:

    [root@comp-core-2-81b58d system]# systemctl restart startvncserver.service

Посмотреть статус:

    [root@comp-core-2-81b58d system]# systemctl status startvncserver.service

И самое важное! Для запуска сервиса при загрузке ОС, его нужно включить:

    [root@comp-core-2-81b58d system]# systemctl enable startvncserver.service


Как говориться все работает в ручном режиме при входе в систему, а при перезагрузке x11vnc не стартует. Не могу понять в чем дело? После какого сервиса нужно стартовать скрипт запуска x11vnc и к какому X -у ( -auth /var/run/lightdm/root/:0 ) авторизоваться до входа пользователя? Есть какие нибудь соображения?

Оффлайн rabochyITs

  • Давно тут
  • **
  • Сообщений: 242
  • Евгений
сам лог после старта:
Спойлер
[root@homezevs ~]# cat /var/log/x11vnc.log
26/04/2014 15:06:08 passing arg to libvncserver: -dontdisconnect
26/04/2014 15:06:08 passing arg to libvncserver: -rfbport
26/04/2014 15:06:08 passing arg to libvncserver: 5900
26/04/2014 15:06:08 passing arg to libvncserver: -rfbauth
26/04/2014 15:06:08 passing arg to libvncserver: /etc/x11vncpass
26/04/2014 15:06:08 x11vnc version: 0.9.12 lastmod: 2010-09-09  pid: 1499
26/04/2014 15:06:08 XOpenDisplay(":0") failed.
26/04/2014 15:06:08 Trying again with XAUTHLOCALHOSTNAME=localhost ...

26/04/2014 15:06:08 ***************************************
26/04/2014 15:06:08 *** 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
может здесь кроется ответ? Знаний не хватает понять ...
 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

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 6 021
    • Email
Есть такой  пакет xorg-extension-vnc, но в p7 https://bugzilla.altlinux.org/show_bug.cgi?id=29277

Вот страница разработчика http://sourceforge.net/projects/tigervnc/files/

Вот бы кто собрал новый пакет... или может будет достаточно достать модуль libvnc.a для xorg и подсунуть вместо существующего...
Сноси Винду, переходи на Линукс ! :)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 16 472
    • Домашняя страница
    • Email
Сборка новой версии вне обновления всего xorg-* оказалась не столь простой. Об этой проблеме знают. Как будет время сам покопаюсь.
Андрей Черепанов (cas@)

Оффлайн Sloth

  • Завсегдатай
  • *
  • Сообщений: 7
    • Email
сам лог после старта:
...
Что сказать, читайте маны - они рулез! ;)

Если Вам еще актуально, вот пример рабочего скрипта.
[Unit]
Description=X11VNC Server
After=prefdm.service

[Service]
User=root
Restart=on-failure
ExecStart=/usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -forever

[Install]
WantedBy=graphical.target
« Последнее редактирование: 08.05.2014 09:39:15 от Sloth »

Оффлайн maestro

  • Давно тут
  • **
  • Сообщений: 265
    • Email
Может, вам лучше воспользоваться NX? Я раньше тоже маялся с x11vnc, пока не узнал, что в Альте NX уже настроен сразу после установки. Скорость нормальная.

Оффлайн rabochyITs

  • Давно тут
  • **
  • Сообщений: 242
  • Евгений
Мне нужен именно X11vnc, никоим образом не завязанный ни на какую сессию. NX я и так использую.

Оффлайн rabochyITs

  • Давно тут
  • **
  • Сообщений: 242
  • Евгений
Что сказать, читайте маны - они рулез! ;)

Если Вам еще актуально, вот пример рабочего скрипта.

помогло, вот мой вариант (законспектирую для начинающих):

создать юнита systemd для запуска сервиса x11vnc с текстом
#########################

[Unit]
Description=X11VNC Server
After=prefdm.service

[Service]
User=root
Restart=on-failure
ExecStart=/usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -dontdisconnect -usepw -noxfixes -shared -forever -rfbport 5900 -rfbauth /root/.vnc/passwd

[Install]
WantedBy=graphical.target


#########################

и разместить его в каталоге /lib/systemd/system

установить x11vnc:
apt-get install x11vnc

создать файл:
touch /lib/systemd/system/x11vnc.service
или открыть в текстовом редакторе под рутом
pluma /lib/systemd/system/x11vnc.service
и внести выше описанный текст без символов решетки

systemctl --system daemon-reload - перечитать сервисы запуска

/root/.vnc/passwd - файл с зашифрованным паролем
создать каталог в директории рута mkdir /root/.vnc
создать этот файл командой x11vnc -storepasswd /root/.vnc/passwd

управление сервисами:
systemctl status x11vnc.service - проверка статуса
systemctl start x11vnc.service - старт
systemctl stop x11vnc.service - стоп
systemctl restart x11vnc.service - рестарт
systemctl enable x11vnc.service - включить в автозагрузку
systemctl disable x11vnc.service - удалить из автозагрузки

-usepw - параметр который заставляет принудительно запрашивать авторизацию, иначе без него у меня подключался без пароля

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 6 021
    • Email
Re: Как добавить в автозагрузку x11vnc
« Ответ #11 : 29.04.2016 21:00:53 »
rabochyITs
Про xorg-extension-vnc тоже не забываем. Настроек меньше, но тоже неплохой вариант.
Сноси Винду, переходи на Линукс ! :)

Оффлайн rabochyITs

  • Давно тут
  • **
  • Сообщений: 242
  • Евгений
Re: Как добавить в автозагрузку x11vnc
« Ответ #12 : 28.12.2017 13:00:58 »
Устанавливаем x11vnc для startkit-server-p8 с lxde-sysvinit окружением

# apt-get install x11vnc
Создаем пароль (путь по умолчанию к файлу /root/.vnc/passwd)
# x11vnc --storepasswd
Enter VNC password: *****
Verify password: *****
Write password to /root/.vnc/passwd?  [y]/n y
Password written to: /root/.vnc/passwd
Для автозапуска vnc, прописывем строчку в файл /etc/rc.d/rc.local
/usr/bin/x11vnc --loop -display :0 -auth /var/run/lxdm/lxdm-\:0.auth -dontdisconnect -usepw -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth /root/.vnc/passwd
--loop - параметр позволяет перезапускать vnc сервис после выхода из сессии.

Проверим:
# cat /etc/rc.d/rc.local
#!/bin/sh
/usr/bin/x11vnc --loop -display :0 -auth /var/run/lxdm/lxdm-\:0.auth -dontdisconnect -usepw -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth /root/.vnc/passwd
все должно работать.

Оффлайн pioner

  • Начинающий
  • *
  • Сообщений: 1
Re: Как добавить в автозагрузку x11vnc
« Ответ #13 : 30.01.2018 19:28:39 »
Устанавливаем x11vnc для дисплей менеджера sddm:
1. Устанавливаем:
apt-get install x11vnc-service2. Включаем в автозагрузку:
chkconfig x11vnc on3. Запускаем:
service x11vnc start4. Устанавливаем пароль доступа:
x11vnc --storepasswd5. Для того, чтобы удаленный доступ через x11vnc был доступен сразу после запуска дисплей менеджера (до авторизации пользователей), приводим файл "/lib/systemd/system/x11vnc.service" к такому виду:
[unit]
Description=X11VNC Server
After=graphical.target
 
[Service]
Restart=always
RestartSec=30
Type=simple
ExecStart=-/bin/bash -c "/usr/bin/x11vnc -display :0 -shared -dontdisconnect -many \
-auth $(ls /var/run/sddm/{*}) -rfbauth /root/.vnc/passwd -o /var/log/x11.log"
 
[Install]
WantedBy=graphical.target
6. Перезагружаем систему.
P.S. Протестировал на Альт Рабочая станция 8.