Suporte remoto com x11vnc

Publicado por Rogério Tomassoni em 14/09/2010

[ Hits: 13.763 ]

 


Suporte remoto com x11vnc



Para realizar suporte remoto nos clientes Linux, escrevi esse script que inicializa os serviços apenas quando são necessários. Criei-os para facilitar a instalação e administração remota.

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

A cada execução o script verifica se o serviço já está rodando para o usuário em questão, finaliza caso exista e inicializa um novo, isso faz com que seja use a mesma porta, e não crie vários processos inúteis que consomem processamento.

Pré-requisito: para funcionar corretamente precisamos baixar os pacotes:
  • x11vnc e
  • zenity

Esse último é para exibição do IP.

Para utilizar os scripts, crie um diretório com os dois aplicativos dentro (x11vnc e zenity), mais os scripts abaixo. Lembre-se eles devem estar com permissão de execução para os usuários, exceto o install.sh, que só serve para realizar a instalação e criar os ícones necessários.

Criei o diretório dentro de /usr/local com nome x11vnc (caso queira mudar, modifique os scripts):

# cd /usr/local
# mkdir x11vnc


E dentro dele coloque os aplicativos, e mais os scripts abaixo:

install.sh:

#!/bin/bash

# Script que realiza a instalacao do x11vnc para suporte remoto.
# Rogerio Tomassoni


# Identificando diretorio de instalacao
dir_cur=$(pwd)

# Arquivo de atalho
atalho="SuporteRemoto.desktop"
atalho_aux="SuporteRemotoNew.desktop"

# Verifica usuario root, so instala se for root
if [ $USER != "root" ]; then
   echo -e "{TEXTO}33[40;33mScript necessita de privilegio administrativo (root). {TEXTO}33[m"
   sleep 5;
   exit 0;
fi

# Verificando a existencia do aplicativos necessarios
# Caso nao exista instala

# Verificando Zenity

#verifica_zenity=$(which zenity)

echo -ne "\n->Intalando zenity...."

#if [ ! $verifica_zenity ]; then
   #echo -e "{TEXTO}33[40;32mZenity nao encontrado, instalando.{TEXTO}33[m"
   dir_cur=$(pwd)
   rpm -ivh $dir_cur/zenity-2.16.0-2.el5.i386.rpm
#fi

# Verificando x11vnc

echo -ne "\n-->Instalando x11vnc...."

#verifica_x11vnc=$(which x11vnc)

#if [ ! $verifica_x11vnc ]; then
   #echo -e "{TEXTO}33[40;32mx11vnc nao encontrado, instalando.{TEXTO}33[m"
   dir_cur=$(pwd)
   rpm -ivh $dir_cur/x11vnc-0.9-1.el5.rf.i386.rpm
#fi


# Ajustando permissoes
echo -ne "\n--->Ajustando permissoes...."
chmod 755 $dir_cur/controleRemoto.sh
chmod 755 $dir_cur/$atalho

# Verifica se ja existe o comando para criar link dinamico na area de trabalho
# Se existe nao adiciona o comando, se nao existe adicicona

echo -ne "\n---->Criando link no /etc/profile...."

cat /etc/profile | grep -iw "ln -s /usr/local/x11vncFw/SuporteRemoto" >> /dev/null

if [ $? -eq 1 ]; then
   #echo -ne "\n\nhome_user=\$(cat /etc/passwd | grep $USER | cut -d: -f6)" >> /etc/profile  
   echo -ne "\nif [ ! -e $HOME/Desktop/SuporteRemoto.desktop ]; then" >> /etc/profile
   echo -ne "\nln -s /usr/local/x11vncFw/SuporteRemoto.desktop \$HOME/Desktop" >> /etc/profile
   echo -ne "\nfi" >> /etc/profile  
fi

echo -ne "{TEXTO}33[40;32m\nInstalacao completa.\n\n{TEXTO}33[m"

exit 0;

SuporteRemoto.desktop:

[Desktop Entry]
Comment=Suporte Remoto
Comment[pt_BR]=Suporte Remoto
Encoding=UTF-8
Exec='/usr/local/x11vncFw/controleRemoto.sh'
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=

controleRemoto.sh:

#!/bin/bash

# Script usado para suporte em tempo real
# Dependências que devem ser instaladas: VNCSERVER e X11VNC
# Rogério Tomassoni A. Jr.

# Limpa shell
clear

# Variável para interface de rede
if_local="eth0"

# Variável com a senha padrao
passwd="furacaoadm"

# Mata todos os processos vnc por usuário especifico, garante que apenas um instância estará em execução
count=0
for pidProcVnc in $(ps -fu $USER | grep -iw "/usr/bin/x11vnc" | awk -F' ' '{ print $2 }'); do
     if [ $count -eq 0 ]; then
   echo "Processo: $pidProcVnc"
   /bin/kill -9 $pidProcVnc
     fi
     count=`expr $count + 1`;  
done

# Remove arquivos temporários
#echo "Removendo arquivos lock TMP"
rm -rf /tmp/.X11-unix/      
rm -rf /tmp/.X1-lock  


# Remove arquivos de log e pid por usuário para não guardar sujeira
if [ -e /home/$USER/.vnc ]; then
   rm -rf /home/$USER/.vnc/*.log
   rm -rf /home/$USER/.vnc/*.pid  
fi


# Pega IP local da máquina cliente
IP=$(LC_ALL=C /sbin/ifconfig $if_local | awk '/inet addr:/ { print substr($2,6) }')
echo "IP: "$IP
echo "Display " $DISPLAY

# Testa se o existe a variável DISPLAY corrente atualizada e correta.
    
   if [ -z $DISPLAY ]; then
       zenity --title="Atencao" --warning --window-icon=/usr/share/icons/crystalsvg/32x32/apps/vnc.png --text="Nao foi possivel localizar um display."
       exit 0;
   else
   # Inicia o x11vnc em background baseado no display do vncserver
   echo -ne "\n Iniciando x11vnc"
       /usr/bin/x11vnc -display $DISPLAY -passwd $passwd -forever  &
       # Mensagem com endereco IP da maquina      
       zenity --title="Endereco IP" --info --window-icon=/usr/share/icons/crystalsvg/32x32/apps/vnc.png --text="Informe o IP como segue abaixo:\n$IP"  
fi

exit 0;

Após criados o diretório, os scripts e os aplicativos, rode o install.sh:

# ./install

O script instala os aplicativos, cria o ícone de atalho na área de trabalho e o torna o ícone persistente, ou seja, se o usuário deletar o ícone ele retorna no próximo login.

Obs.: O ícone só irá aparecer na área de trabalho, no próximo login dos usuários. Foi testado em Red Hat EL5, com kde.

Outras dicas deste autor

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

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

Bloqueando tráfego via MAC com iptables

Suporte remoto com VNC LTSP 4.2

Acertando permissão do nagios.cmd

Leitura recomendada

Modificando encoding de UTF-8 para ISO-8859-1 (Debian e derivados)

O TouchPad do seu notebook não funciona no Ubuntu 10.04? Não funcionava!

Módulo de segurança do BB no Debian 10 (Buster)

Configurando a ATI Radeon em um notebook Asus no Debian

Adicionando novas opções ao menu do Fluxbox

  

Comentários
[1] Comentário enviado por tomassoni em 15/09/2010 - 18:54h

Correção só para não ficar confuso.Desconsiderar os dois comentários no script
controleRemoto.sh.
# Dependências que devem ser instaladas: VNCSERVER e X11VNC, pois usaremos apenas o x11vnc, e
# Inicia o x11vnc em background baseado no display do vncserver, mesmo motivo.
Aproveitei outro script que utilizo, http://www.vivaolinux.com.br/dica/Suporte-remoto-com-vnc-LTSP-4.2/
e o comentário passou batido.




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts