Vnc: различия между версиями
Vovan (обсуждение | вклад) (→Как systemd сервис) |
Vovan (обсуждение | вклад) (→Как systemd сервис) |
||
Строка 97: | Строка 97: | ||
[Service] | [Service] | ||
Restart=on-failure | Restart=on-failure | ||
− | ExecStart=/usr/bin/x11vnc -dontdisconnect -display :0 -shared -forever -rfbport 5900 -rfbauth /root/.vnc/passwd | + | ExecStart=/usr/bin/x11vnc -dontdisconnect -display :0 -auth /var/run/lightdm/root/:0 -shared -forever -rfbport 5900 -rfbauth /root/.vnc/passwd |
User=root | User=root | ||
Group=root | Group=root |
Версия 11:39, 9 сентября 2020
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
далее добавить до
exit 0
в файл
/etc/rc.local
код
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
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
не будет статус 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
проваливается с матюгами в логах при обычном старте. Поэтому такой костыль.
rerun_x11vnc
--- это функция, бесконечно вызывающая саму себя с задержкой в 5 секунд и проверяющая запущенный процесс с x11vnc. Если он не запущен, то дергает функцию run_x11vnc. Сделана, т.к. при отсоединении от VNC процесс завершается.
То есть раз в 5 секунд эта функция "тикает" и проверяет наличие процесса. Если процесса нет, значит попытка запустить его, дёрнув функцию run_x11vnc
Трансляция рабочего стола преподавателя
транслируем только левый дисплей в двухмониторной конфигурации
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