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:
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.