Suporte remoto com VNC LTSP 4.2

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

[ Hits: 6.669 ]

 


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

Acertando permissão do nagios.cmd

Perfis com uma pitada de tunning

Bloqueando tráfego via MAC com iptables

Limitando sessões KDE LTSP 4.2

Erro ao inciar sessão gráfica (status 256)

Leitura recomendada

Descobrindo a senha de sua conexão PPP

Iniciando no modo gráfico no Slackware

Links sobre desenho e pintura usando Software Livre

Colocar um descanso de tela como plano de fundo da área de trabalho (XFCE)

Colocando sombreamento no Fluxbox

  

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts