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

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
Строка 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.
 
run_ok
 
 
 
не будет статус
 
 
 
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