Executar comandos remotamente através de SSH

O  SSH é um protocolo de rede que nos permite aceder a máquinas remotas e executar todo o tipo de comandos. É um protocolo seguro, pois todos as dados que são trocados entre as máquinas são encriptados. Podemos executar todos os comandos na máquina remota como se tivéssemos a executa-los localmente. Não só comandos em modo de texto, mas também é possível executar aplicações para ambiente gráfico, como o Firefox e qualquer outro.

O comando ssh que tem o mesmo nome do protocolo, é o comando que nos permite no Linux executar comandos remotamente. Este utilitário é importante para quem gere máquinas, pois evitamos deslocações. Podemos trabalhar comodamente em um único computador onde temos os scripts organizados e como também podemos pesquisar para resolver um determinado problema. É um utilitário muito importante muito mais ainda no mundo Linux/Unix.

Neste artigo vou tentar de forma simples mostrar alguns exemplos de como executar comandos numa máquina remota.

O comando ssh

A sintaxe do comando ssh

ssh [opções] [utilizador]@[servidor] ‘[comando]’

Para usar este comando claro que temos que ter credenciais necessários para nos ligarmos à máquina remota. Neste artigo a termos de exemplo vou usar o utilizador root e o IP 192.168.1.1. Ora vamos a uns exemplos.

Ver à quanto tempo a máquina está ligada

$ ssh root@192.168.1.1 'uptime'

Reiniciar a máquina

$ ssh root@192.168.1.1 'reboot'

Utilização do disco

$ ssh root@192.168.1.1 'df -h'

Utilização da memória

$ ssh root@192.168.1.1 'free -m'

Carga do sistema

$ ssh root@192.168.1.1 '/proc/loadavg'

Executar vários comandos

Podemos executar vários comandos de uma só vez, para isso basta encadear os comandos que queremos executar. Esta é a sintaxe.

ssh [opções] [utilizador]@[servidor] ‘[comando1]; [comando2]; [comando3];’

ou assim

ssh [opções] [utilizador]@[servidor] << EOF
comando1
comando2
comando2
EOF

Utilização da memória e Utilização do disco e Carga do sistema

$ ssh root@192.168.1.1 'uptime; df -h; cat /proc/loadavg'

ou assim

$ ssh root@192.168.1.1 << EOF
uptime;
df -h;
cat /proc/loadavg
EOF

Versão do kernel e Modelo de processador e Memória existente

$ ssh root@192.168.1.1 << EOF
uname -a
grep "model name" /proc/cpuinfo
grep MemTotal /proc/meminfo
EOF

Executar script local numa máquina remota

Esta é a sintaxe do comando para executar um script local na máquina remota. O script é passado com input ao comando ssh.

$ ssh [utilizador]@[servidor] ‘bash -s’ < [script]

Executar o script local “backup.sh” na máquina remota

$ ssh root@192.168.1.1 'bash -s' < backup.sh

Este script é em bash, mas se fosse em PHP funcionaria na mesma só teríamos que mudar o interpretador de comandos desta forma.

$ ssh root@192.168.1.1 'php' < backup.php

Executar programas com ambiente gráfico

Para executar programas para um ambiente gráfico como o Firefox ou Thunderbird por exemplo, necessitamos de estar a trabalhar numa máquina com ambiente gráfico. Pois o programa é processado na máquina remota mas as janelas são abertas na máquina local. Para este efeito temos de passar a opção -X ao comando ssh para que ele use o ambiente gráfico local para apresentar as janelas.

$ ssh -X root@192.168.1.1 'firefox'

 

O ssh facilita muito a vida de quem trabalha com computadores, pois tem tudo o que se espera, é fácil de usar, é rápido, é seguro. Executar muitos comandos tornas-se chato quando é de forma repetitiva mas os scripts ajudam.

Ter que inserir a palavra passe todas as vezes que executamos um comando também é muito chato, veja aqui como configurar o ssh para usar chaves em vez de palavra passe.

Espero que este artigo seja útil para alguém.

 

Artigos Relacionados:

Deixe uma resposta