quinta-feira, 3 de junho de 2010

Shell SSH com o Remmina

O Remmina é um ótimo gerenciador de conexões Remote Desktop, VNC e XDMCP. A única desvantagem é que ele não suporta conexões de console via ssh.

Bem, esse recurso será adicionado na versão 0.8, mas como ela ainda não está disponível nos repositórios, e é bem chata de compilar, resolvi fazer uma pequena "gambiarra" até que a nova versão esteja disponível.

Pra quem lida com dezenas de servidores, é interessante ter uma ferramenta integrada para todos.

O remmina chama o binário rdesktop que fica em /usr/bin, passando os parametros da conexao como argumentos.  A idéia é interceptar essa chamada ao rdesktop e então chamar um gnome-terminal fazendo ssh ao servidor, caso o domínio seja configurado como SSH.

Como interceptar essa chamada? Vamos aproveitar uma característica interessante, a precedência de localização dos binários. Para quem não sabe, quando chamamos um certo programa apenas pelo nome, o interpretador de comandos procura o arquivo de programa em certo diretórios, definidos pela variável $PATH. Note que até mesmo o Windows utiliza este conceito com a variável %path%.

Vejamos o PATH do Ubuntu 10.04:

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Como o rdesktop está em /usr/bin, se colocarmos outro programa também chamado rdesktop em /usr/local/bin ele será chamdo em vez do /usr/bin/rdesktop

O que temos que fazer agora é criar o script /usr/local/bin/rdesktop que decidirá se vai chamar o /usr/bin/rdesktop ou um terminal com ssh

#!/bin/bash

echo $@ | grep "SSH"

if [ $? = 1 ]; then

        /usr/bin/rdesktop $@

else

        U=`echo $@  | cut -f2 -d\ `
        H=`echo $@ | sed -re 's/.*\ (.*):3389/\1/g'`
        gnome-terminal -e "ssh $U@$H"

fi

Basta salvar o script acima como /usr/bin/rdesktop e dar um chmod 755 /usr/bin/rdesktop,  para marcá-lo como executável.

Depois, para utilizar uma conexão ssh, basta criar uma nova conexão RDP, especificando apenas o Servidor e o nome de usuário ( as outras configurações são irrelevantes). No lugar do domínio, coloque SSH (em maiúculas)

Se tiver dúvidas em enteder o script, poste um comentário que terei prazer em explicar detalhadamente.

Nota Importante

O conteúdo deste blog foi desenvolvido por mim e não foi copiado de outros locais, embora alguns poucos tópicos tenham sínteses e adaptações de outras fontes, que neste caso, serão referenciadas para se dar o devido crédito.
A reprodução é permitida desde que citada a fonte e para fins não comerciais. É proibido o uso para fins comercias sem a expressa autorização do autor.
Embora o conteúdo aqui apresentado seja testado pelo autor e/ou passado por sua aprovação, não é oferecida nenhuma garantia de que tudo funcionará corretamente ou não irá danificar os sistemas envolvidos, pois o sucesso dependerá do ambiente e/ou conhecimento do leitor.
Ao utilizar este blog, para qualquer fim, o leitor concorda com estes termos e isenta o autor de qualquer responsabilidade, ficando o uso do conhecimento aqui apresentado por sua conta e risco.
Caso discorde destes termos, gentileza fechar esta página imediatamente.

Copyright Jonathan Araújo 2010