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.
2 comments
Marcos Dantas
Muito obrigado. Estava precisando dar um comando remoto em uma máquina. Esse texto foi muito útil.
Pahana
Parabens pelo texto. era exatamente o que estava procurando e nao achava em outros sites...top!!!