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