Estou sshing para um sistema e reinicializando-o em um loop while, porém a sessão ssh não fecha, então o script fica travado após a primeira reinicialização. Eu tentei várias maneiras de fechá-lo, alguma ideia? Eu nunca chego ao "teste" do eco.
#!/bin/bash
while true
do
echo "Executing SSH session to 192.168.1.1..."
sshpass -p "pass" ssh -o StrictHostKeyChecking=no [email protected] << !
./reset.sh
!
echo "test"
sleep 20
done
redefinir.sh
#! /bin/sh
if [ -e /dev/ttyUSB2 ] && [ -e /dev/ttyUSB5 ]; then {
reboot -f
}
fi
Responder1
O que pode estar acontecendo é que a sessão remota foi perdida enquanto você solicita uma reinicialização e, portanto, o sistema travará por algum tempo aguardando a resposta do sistema remoto.
Eu apresentaria antes disso sshpass
um comando de tempo limite, como timeout
ou timelimit
em:
timeout 10s sshpass ...
Quanto aos ssh
serviços, tente evitar o uso de senhas e, em vez disso, use a autenticação por certificado RSA. Não tenho certeza sobre esse comando sshpass específico, mas muitas vezes, se o binário que está sendo chamado não tomar precauções, a senha poderá ser vista ps
quando usada na linha de comando.