Vnc: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
(Примеры сервисов)
Строка 16: Строка 16:
  
 
  /root/.vnc/passwd
 
  /root/.vnc/passwd
 
далее добавить до
 
 
exit 0
 
 
в файл
 
 
/etc/rc.local
 
 
код
 
 
<pre>
 
run_x11vnc() {
 
    x11vnc -dontdisconnect -display :0 \
 
        -auth /var/run/lightdm/root/:0 \
 
        -notruecolor -noxfixes -shared \
 
        -forever -rfbport 5900 -bg \
 
        -rfbauth /root/.vnc/passwd && run_ok=$?
 
 
    if [ $run_ok -eq "0" ]; then
 
        echo "DEBUG run_x11vnc: $(date) x11vnc RUN OK !!!" >> /var/log/boot.log
 
    else
 
        echo "DEBUG run_x11vnc: $(date) x11vnc FAILED!!!" >> /var/log/boot.log
 
        run_x11vnc
 
    fi
 
}
 
 
rerun_x11vnc() {
 
    is_running=$(ps aux | grep x11vnc | grep -v grep | wc -l)
 
    sleep 5s
 
    if [ $is_running -ne "1" ]; then
 
        echo "DEBUG rerun_x11vnc: $(date) vns was killed " >> /var/log/boot.log
 
        run_x11vnc
 
    fi
 
    rerun_x11vnc
 
}
 
 
rerun_x11vnc
 
 
</pre>
 
 
<code>run_x11vnc</code> -- это рекурсивная функция, которая будет вызывать себя на выполнения до тех пор пока команда
 
 
x11vnc -dontdisconnect -display :0 -auth /var/run/lightdm/root/:0 -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -rfbauth /root/.vnc/passwd
 
 
не выполнится корректно, т.е. пока в переменной <code>run_ok</code> не будет статус 0.
 
 
Другими словами, на этапе старта скриптов из
 
 
/etc/rc.local
 
 
по каким-то причинам еще нет дисплея 0 у подсистемы X11. Следовательно, команда
 
 
  x11vnc -dontdisconnect -display :0 -auth /var/run/lightdm/root/:0 -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -rfbauth /root/.vnc/passwd
 
 
проваливается с матюгами в логах при обычном старте. Поэтому такой костыль.
 
 
<code>rerun_x11vnc</code> --- это функция, бесконечно вызывающая саму себя с задержкой в 5 секунд и проверяющая запущенный процесс с x11vnc. Если он не запущен, то дергает функцию run_x11vnc. Сделана, т.к. при отсоединении от VNC процесс завершается.
 
То есть раз в 5 секунд эта функция "тикает" и проверяет наличие процесса. Если процесса нет, значит попытка запустить его, дёрнув функцию run_x11vnc
 
  
 
=Полезное=
 
=Полезное=

Версия 13:23, 17 марта 2021

VNC-server ubuntu

проверено на Ubuntu 14.04.1 MATE i386

--Vovan (обсуждение) 16:15, 15 марта 2015 (UTC)

установка

sudo su
aptitude install x11vnc

формирование файла с паролем

x11vnc -storepasswd

результат формирования пароля будет в файле

/root/.vnc/passwd

Полезное

Трансляция рабочего стола преподавателя

транслируем только левый дисплей в двухмониторной конфигурации

x11vnc -clip 1920x1080+0+0 -display :0 -viewonly -shared -rfbport 5900 -rfbauth .vnc/passwd

Как systemd сервис

Создать файл, например:

/etc/systemd/system/x11vnc.service 

Со следующим содержимым:

[Unit]
Description=x11vnc
Requires=network-online.target
After=network-online.target

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

[Install]
WantedBy=multi-user.target


далее выполнить:

systemctl daemon-reload
systemctl enable x11vnc.service

проверить статус:

systemctl status x11vnc.service

проверить журнал:

journalctl -lf -u x11vnc.service

Примеры сервисов

cat /etc/systemd/system/x11vnc.service 
[Unit]
Description=x11vnc
Requires=network-online.target
After=network-online.target

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

[Install]
WantedBy=multi-user.target

cat /etc/systemd/system/x11vnc-5901.service 
[Unit]
Description=x11vnc
Requires=network-online.target
After=network-online.target

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

[Install]
WantedBy=multi-user.target


Полезные параметры

Параметр, который включает показ курсора на удалённом клиенте (актуально для клиента VNC Viewer под iPad)

-multiptr