Suporte remoto com VNC LTSP 4.2

Publicado por Rogério Tomassoni em 25/04/2010

[ Hits: 7.142 ]

 


Suporte remoto com VNC LTSP 4.2



Para realizar suporte remoto nos clientes com LTSP 4.2, escrevi esse script que inicializa os serviços apenas quando são necessários.

O script inicializa os serviços VNCSERVER e X11VNC e já informa o IP e porta (sempre será 0, mas por via das dúvidas...) para o usuário, que por consequência informa a pessoa que irá realizar a conexão.

A cada execução o script verifica se os serviços já estão rodando para o usuário em questão, finaliza caso exista e inicializa um novo, sempre limpando os arquivos de lock e temporários criados pelos serviços.

Pré-requisito: para funcionar corretamente precisamos ter instalado no servidor (instale conforme sua distribuição, aqui testei com RHEL5):
  • VNCSERVER e;
  • X11VNC

Após instalado, crie um arquivo (que será o script, ex. controleRemoto.sh) no local que ache mais apropriado (ex. /usr/local) e ajuste as permissões para torná-lo executável por qualquer usuário (ex. chmod 0755 /usr/local/controleRemoto.sh).

O script:

#!/bin/bash

# Script usado para suporte remoto com LTSP 4.2
# Dependências que devem ser instaladas no servidor: VNCSERVER e X11VNC
# Rogério Tomassoni A. Jr.

# Binário arp

ARP="/sbin/arp -a"

# Mata todos os processos vnc por usuário específico
for pidProcVnc in $(ps -fu $USER | grep vnc | awk -F' ' '{ print $2 }'); do
#echo "Processo: $procVnc"
/bin/kill -9 $pidProcVnc
done

# Remove arquivos de lock no /tmp criados pelo vnc por usuário
for arqLockVncTmp in $(/bin/ls -la /tmp | grep $USER | awk -F' ' '{ print $9 }' | grep -i ".X*-lock"); do
#echo "Arquivos Lock TMP: $arqLockVncTmp"
rm -rf /tmp/$arqLockVncTmp
done

# Remove arquivos de lock no /tmp/.X11-unix/ criado pelo vnc por usuário
for arqLockVncTmpX11 in $(ls -la /tmp/.X11-unix/ | grep $USER | awk -F' ' '{ print $9 }'); do
#echo "Arquivos Lock TMP-X11: $arqLockVncTmpX11"
rm -rf /tmp/.X11-unix/$arqLockVncTmpX11
done

# Remove arquivos criados no home de cada usuário
rm -rf /home/$USER/.vnc/*.pid
rm -rf /home/$USER/.vnc/*.log

# Iniciando vncserver
#echo "\n Iniciando vncserver"
/usr/bin/vncserver

# Pega IP local da máquina cliente
IP=$(w | grep $USER | grep -i "/bin/sh" | tr -s " " | cut -d " " -f2 | cut -d ":" -f1)
#echo "IP: "$IP
tmp=$(echo $IP | cut -d " " -f3)
#echo "TMP: "$tmp
IP2=$( $ARP $tmp | cut -d " " -f2 | tr -s "(" " " | tr -s ")" " ")
#echo "IP2: "$IP2

# Testa se o vncserver foi iniciado corretamente, caso positivo inicia o x11vnc
if [ $? == 0 ]; then
# Pega o display do vncserver
dsp=$(ps aux | grep $USER | grep Xvnc | grep http | tr -s " " ": " | cut -d: -f14)
# Inicia o x11vnc em background baseado no display do vncserver
/usr/bin/x11vnc -display :$dsp -forever &
# Mensagem com endereço IP da máquina
zenity --title="DISPLAY:$dsp" --info --window-icon=/usr/share/icons/crystalsvg/32x32/apps/vnc.png --text="Informe ao técnico o IP como segue abaixo:\n $IP2:0"
fi

exit 0;

Criando link para o script

Crie na área de trabalho de cada usuário um link para o script, no RHEL usando KDE fica assim (crie um arquivo .desktop, ex. Suporte Remoto.desktop):

[Desktop Entry]
Comment=Suporte Remoto
Comment[pt_BR]=Suporte Remoto
Encoding=UTF-8
Exec='/usr/local/controleRemoto.sh' <-- Local onde se encontra o script
GenericName=Suporte Remoto
GenericName[pt_BR]=Suporte Remoto
Icon=vnc
MimeType=
Name=Suporte Remoto
Name[pt_BR]=Suporte Remoto
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-DCOP-ServiceType=
X-KDE-SubstituteUID=false
X-KDE-Username=

Dica: Para tornar o ícone persistente, ou seja, mesmo que o usuário delete, ele seja restaurado após o login novamente (tem outras soluções como usar o KIOSK do KDE, mas essa é uma saída), crie este arquivo em um local comum (ex. /usr/local/Suporte Remoto.desktop) e dentro do /home/$USER/.kde/Autostart crie um link simbólico para o script que irá restaurar o atalho para o script que inicializa os serviços.

Obs.: Tudo que existir dentro do diretório Autostart e for executável será executado após a inicialização do KDE.

Conteúdo do script de Autostart:

#!/bin/bash
ln -s /usr/local/Suporte Remoto.desktop /home/$USER/Desktop/Suporte Remoto.desktop

Pronto, basta dar um duplo clique no ícone criado na área de trabalho e uma janela com IP/porta será exibido. Depois é só realizar a conexão.

Outras dicas deste autor

Perfis com uma pitada de tunning

Script Nagios + NRPE checa filas CUPS

Adicionando módulo LTSP4.2 à árvore do kernel

Bloqueando tráfego via MAC com iptables

JPykotaGUI - controle de impressão

Leitura recomendada

Como restaurar o arquivo "/dev/null"

Como resolver o erro no CUPS: Unable to get list of printer drivers

Como saber se está usando Wayland ou Xorg

Mudar todos os ícones das pastas e tipos de arquivos usados no KDE

Traduções automáticas - Google Translate no Desktop

  

Comentários
[1] Comentário enviado por alaxricard em 26/04/2010 - 12:51h

Muito bom mesmo amigo.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts