Blog DLN Cloud

Executar comandos no servidor pelo SSH

Você está precisando executar comandos no servidor pelo SSH sem precisar carregar a sessão do shell remoto ? então continue lendo esse artigo.

O SSH é mais poderoso do que apenas fornecer acesso ao shell de um servidor ou computador remoto, pois também pode ser usado para automatizar execução de comandos em sistemas remotos, como executar backups e salvar no servidor remoto ou executar comandos no servidor pelo SSH sem precisar carregar uma sessão do shell bash.

Para executar os comandos usando o ssh, você vai precisar instalar o pacote openssh-server no servidor remoto como já ensinado aqui e o pacote openssh-client no cliente para a distribuição linux debian ou baseadas no debian, caso use o redhat instale o pacote openssh-clients como demonstrado nesse artigo.

A seguir demonstro alguns exemplos de como automatizar comandos para ver como funciona a execução remota de comandos via ssh, e depois você pode adaptar às suas próprias necessidades.

Exemplo 1 – Verificando se arquivo existe e copiando o arquivo

O seguinte comando SSH pode ser usado para criar uma cópia de um arquivo do servidor remoto se o arquivo existir. no exemplo vou criar um cópia do arquivo /etc/hosts do servidor remoto para /tmp, somente se o arquivo /etc/hosts existir:

ssh [email protected] '[ -f /etc/hosts ]&& cp -v /etc/hosts /tmp'
[email protected]'s password: 
'/etc/hosts' -> '/tmp/hosts'

Para confirmar se o arquivo foi copiado, posso usar novamente o ssh a partir do terminal:

ssh [email protected] 'ls -lh /tmp/hosts'
[email protected]'s password: 
-rw-r--r-- 1 dlncloud dlncloud 221 Mar 14 20:25 /tmp/hosts

Exemplo 2 – Executando Shell Script no Servidor Remoto

O Próximo exemplo irá executar um script chamado “script.sh” que fica dentro do diretório /tmp no servidor remoto. Para funcionar, o script precisar ter permissão de execução, ou seja, precisa ter as permissões executáveis ​​adequadas.

ssh [email protected] '[ -x /tmp/script.sh ] && /tmp/script.sh'
[email protected]'s password: 

Shell Script em execução...

Comandos sendo exeutados...

Script sendo finalizado...

Antes de executar o script, primeiro é testado se o script /tmp/script.sh existe e tem permissão de execução, como tem permissão de execução, o script é executado e é mostrada mensagens impressas na tela pelo script durante a execução do mesmo.

Exemplo 3 – Backup de arquivo do sistema local e salvando no servidor remoto

O ultimo exemplo será demonstrado é um backup do arquivo de log /var/log/messages do sistema local e usando o ssh será salvo uma cópia desse arquivo no sistema operacional do servidor remoto.

O comando tar será executado e irá criar um cópia do arquivo de log e enviar os arquivos para entrada padrão do ssh usando o pipe “|” que irá executar o comando dd e salvar o arquivo no diretório /tmp(diretório que a conta de usuário usada tem permissão de gravação)”.

tar -zcpvf - /var/log/messages | ssh [email protected] 'dd of=/tmp/var_log_messages.tar.gz ; [ -f /tmp/var_log_messages.tar.gz ]&& ls -l /tmp/var_log_messages.tar.gz'
tar: Removendo `/' inicial dos nomes dos membros
/var/log/messages
[email protected]'s password: 
10231+1 records in
10231+1 records out
5238475 bytes (5.2 MB, 5.0 MiB) copied, 0.778942 s, 6.7 MB/s
-rw-rw-r-- 1 dlncloud dlncloud 5238475 Mar 14 23:56 /tmp/var_log_messages.tar.gz

Na saída acima é mostrado todo o processo, inclusive que é feita uma verificação para saber se o arquivo /var/log/messages do sistema local foi copiado e a copia foi salva em /tmp/var_log_messages.tar.gz, se o arquivo existir o comando ls é executado no servidor remoto e exibe as propriedades na tela do arquivo salvo no sistema do servidor remoto.

É isso pessoal neste tutorial, foi demonstrado como executar comandos no sistema linux remoto sem precisar carregar a sessão do shell para interigir com sistema e excutar tais comandos, essa é uma alternativa que você pode incluir nos seus shell scripts para automatizar tarefas.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *