Bash travado ao executar comando remoto

1. Bash travado ao executar comando remoto

Dalton Augusto Soares
DaltonSoares

(usa Ubuntu)

Enviado em 06/05/2020 - 21:01h

Galera boa noite,

Criei o script abaixo com o intuito de:
1 - Copiar um .tar para servidores remotos
2 - Extrair esse .tar nos servidores remotos.
3 - Criar um link simbólico
4 - Executar um comando de start no servidor remoto.

O passo 4 parece que trava meu bash e só avança se eu faço um "ctrl c".

Alguém sabe me explicar como faço para evitar essa parada e ter que executar o "ctrl c" ?

SCRIPT:


#!/bin/bash
clear
input="/tmp/teste-servidores.txt"
for server in $(cat ${input});
do
echo "-----------------------------"
echo "Servidor: $server"
scp "node_exporter-1.0.0-rc.0.linux-amd64.tar" "${server}:\$HOME"
ssh ${server} 'tar -xvf ${HOME}/node_exporter-1.0.0-rc.0.linux-amd64.tar'
ssh ${server} 'ln -s ${HOME}/node_exporter-1.0.0-rc.0.linux-amd64 node_exporter'
ssh ${server} 'cd $HOME/node_exporter&& ./node_exporter 2>&1&> /dev/null & '
echo
done


EXECUÇÃO DETALHADA:

bash -x copia_node_exporter.sh
+ clear
+ input=/tmp/teste-servidores.txt
++ cat /tmp/teste-servidores.txt
+ for server in '$(cat ${input})'
+ echo -----------------------------
-----------------------------
+ echo 'Servidor: usuario@servidor'
Servidor: usuario@servidor
+ scp node_exporter-1.0.0-rc.0.linux-amd64.tar 'usuario@servidor:$HOME'
node_exporter-1.0.0-rc.0.linux-amd64.tar 100% 17MB 16.8MB/s 00:01
+ ssh usuario@servidor 'tar -xvf ${HOME}/node_exporter-1.0.0-rc.0.linux-amd64.tar'
node_exporter-1.0.0-rc.0.linux-amd64/
node_exporter-1.0.0-rc.0.linux-amd64/LICENSE
node_exporter-1.0.0-rc.0.linux-amd64/NOTICE
node_exporter-1.0.0-rc.0.linux-amd64/node_exporter
+ ssh usuario@servidor 'ln -s ${HOME}/node_exporter-1.0.0-rc.0.linux-amd64 node_exporter'
+ ssh usuario@servidor 'cd $HOME/node_exporter&& ./node_exporter 2>&1&> /dev/null & '
^CKilled by signal 2.
+ echo


Muito obrigado a ajuda.


  


2. Re: Bash travado ao executar comando remoto

Fábio Berbert de Paula
fabio

(usa Debian)

Enviado em 07/05/2020 - 16:43h

Isso ocorre porque o comando "./node_exporter" provavelmente é um daemon que fica rodando em background. No teu caso você vai precisar executá-lo com um "&" no final pra liberar o terminal:

./node_exporter &

Só que provavelmente o daemon se encerrará quando a sessão ssh for interrompida. Então dependendo de como o ./node_exporter foi projetado, será necessário usar o nohup:

nohup ./node_exporter &

Veja mais sobre o nohup em: https://www.vivaolinux.com.br/dica/O-comando-nohup

Então a última linha ficaria assim:

ssh ${server} 'cd $HOME/node_exporter && nohup ./node_exporter & 2>&1&> /dev/null '



3. Re: Bash travado ao executar comando remoto

Dalton Augusto Soares
DaltonSoares

(usa Ubuntu)

Enviado em 07/05/2020 - 17:41h

Obrigado pela resposta.

Eu havia usado o nohup já e também não foi, olha só a execução.
Só encerrou o processo quando fiz o "ctrl c"

./copia_node_exporter.sh
-----------------------------
Servidor: fqaread@rjolnxe56
node_exporter-1.0.0-rc.0.linux-amd64.tar 100% 17MB 16.8MB/s 00:00
node_exporter-1.0.0-rc.0.linux-amd64/
node_exporter-1.0.0-rc.0.linux-amd64/LICENSE
node_exporter-1.0.0-rc.0.linux-amd64/NOTICE
node_exporter-1.0.0-rc.0.linux-amd64/node_exporter


ESTA TRAVADO



^CKilled by signal 2.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#!/bin/bash
clear
input="/temp/teste-servidores.txt"
for server in $(cat ${input});
do
echo "-----------------------------"
echo "Servidor: $server"
scp "node_exporter-1.0.0-rc.0.linux-amd64.tar" "${server}:\$HOME"
ssh ${server} 'tar -xvf ${HOME}/node_exporter-1.0.0-rc.0.linux-amd64.tar'
ssh ${server} 'ln -s node_exporter-1.0.0-rc.0.linux-amd64 node_exporter'
ssh ${server} 'cd node_exporter&&nohup ./node_exporter &'
echo

done









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts