Categorias
Linux

Janela remota

O Sistema de Janelas X usa um modelo cliente-servidor para criar um monitor. Na maioria das vezes você nem percebe, porque o cliente e o servidor são executados na mesma máquina, mas o sistema foi desenvolvido desta maneira para permitir que clientes X remotos se conectem ao servidor X. Você pode pensar em um cliente fino, quando o cliente X consiste em apenas um teclado e um monitor conectados ao servidor. O efeito colateral positivo é que esta funcionalidade está apenas disfarçada na fachada da sua máquina Linux.

O SSH encaminha sessões de janela X automaticamente, o que significa que se você iniciar uma aplicação numa máquina remota de um console SSH, a janela da aplicação aparecerá na máquina local. A janela está se comunicando com a máquina remota usando o protocolo X, o motivo de haver um atraso cada vez que você redimensiona a janela ou clica em algum lugar na interface.

xterm -display :0 -e klamav &

Se o comando acima é executado de um console SSH conectado a uma máquina remota, seria aberta a janela do Xterm e executado KlamAV na tela remota ao invés de na tela local - você não poderá na sua tela. Isto é útil se você precisa iniciar uma aplicação remotamente, como um cliente de e-mail ou uma varredura de vírus.

A parte importante do comando é o parâmetro de exibição. Aqui usamos :0, que é a primeira tela do sistema remoto. O X usa endereços IP e portas para especificar um destino e nós simplesmente omitimos o endereço, direcionando para a máquina local. Você pode também usar localhost:1 para especificar a segunda tela.

O parâmetro -e que o sucede irá executar a aplicação do Xterm aberto, iniciando KlamAV na mesma tela do console Xterm. Você também pode usar no comando nohup para que ao término da sessão SSH para que a aplicação que está executando remotamente não permaneça.

Categorias
Linux

SSH reverso

O SSH é uma das ferramentas mais versáteis para Linux, mas a maioria das pessoas o utiliza apenas de uma maneira - usando o servidor para enviar dados para o cliente. O que provavelmente você não sabe é que também é possível trocar a lógica usual SSH e usar o cliente para enviar dados ao servidor. Pode parecer contratintuitivo, mas este acesso pode evitar que você tenha que reconfigurar roteadores e firewalls, e é também muito cômodo para acessar a rede corporativa de casa sem VPN.

É necessário instalar o servidor OpenSSH na sua estação de trabalho e a partir de então você deve digitar o que está a seguir para contruir um túnel para a porta SSH na sua máquina de casa.

ssh -R 1234:localhost:22 home_machine

Substitua home_machine pelo endereço IP da sua máquina de casa. Usamos a porta número 1234 na máquina de casa para a sessão de SSH encaminhada e esta porta precisa estar disponível para ser usada e desbloqueada pelo firewall local. Uma vez que você tenha configurado a conexão no trabalho, já pode digitar o seguinte para acessar as máquinas do trabalho de casa:

ssh workusername@localhost -p 1234

Todas as sessão da sua máquina do trabalho serão abertas e você poderá trabalhar como se estivesse no escritório. Não é difícil de modificar o mesmo processo para acessar arquivos do servidor ou até mesmo áreas de trabalho remotas usando VNC. O único problema que você pode encontrar é a expiração do tempo da primeira sessão SSH. Para resolver isso, abra /etc/ssh/sshd.conf na sua máquina do trabalho e tenha certeza de que contém 'KeepAlive yes' e 'ServerAliveInterval 60', pois com isso a conexão não cairá automaticamente.

Categorias
Linux

Controle remoto do MPlayer

Há dois tipos de pessoas neste mundo: aquelas que pensam que o MPlayer é o melhor tocador de mídia na história da existência, e aqueles que estão errados. Uma das características menos conhecidas é a possibilidades de controlá-lo pelo console, um script shell ou até mesmo através da rede. O segredo para este truque está na opção -slave do MPlayer, que diz ao programa para aceitar comandos do stdin stream ao invés das teclas de teclado. Combinar isso com a opção -input e comandos serão lidos de um arquivo ou um FIFO. por exemplo, teste isto num terminal:

mkfifo ~/mplayer-control
mplayer -slave -input file=/home/user/mplayer-control
filetoplay

Então, em outro terminal ou de um script, entre:

echo "pause" >~/mplayer-control

Este comando irá interromper a execução corrente do MPlayer, e ao soltar o comando novamente irá recomeçar a gravação. Note que você tem que dar o caminho completo do arquivo de controle para o MPlayer, com /home/user e daí em diante, porque ~/mplayer-control apenas não irá funcionar. Há vários outros comandos que você pode enviar para o MPlayer - de fato, qualquer operação de teclado no programa dispara um comando que você pode usar no seu script de controle. Você pode até operar o MPlayer de outro computador através da rede usando SSH ou Netcat. Veja este exemplo:

ssh user@host "echo pause >mplayer-control"

Aqui, nós nos autenticamos numa máquina remota (servidor) com o nome de usuário e executamos um comando para enviar a interrupção para o arquivo de controle do MPlayer da máquina remota. É claro, isto pode ser feito muito mais rápido se você tem a chave de autenticação de SSH habilitada para que você não precisa entrar com a senha a cada vez.