Estoy conectando un sistema y reiniciándolo en un bucle while, sin embargo, la sesión ssh no se cierra, por lo que el script simplemente se bloquea después del primer reinicio. He probado varias formas de cerrarlo, ¿alguna idea? Nunca llego a la "prueba" de 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
restablecer.sh
#! /bin/sh
if [ -e /dev/ttyUSB2 ] && [ -e /dev/ttyUSB5 ]; then {
reboot -f
}
fi
Respuesta1
Lo que puede estar sucediendo es que la sesión remota se pierda cuando usted solicita un reinicio, por lo que el sistema se bloqueará por un tiempo esperando que el sistema remoto responda.
Antes de eso, introduciría sshpass
un comando de tiempo de espera, como timeout
o timelimit
como en:
timeout 10s sshpass ...
En cuanto a ssh
los servicios, intente evitar el uso de contraseñas y, en su lugar, utilice la autenticación de certificado RSA. No estoy seguro acerca de ese comando sshpass en particular, pero a menudo, si el binario al que se llama no toma precauciones, la contraseña se puede ver ps
cuando se usa en la línea de comando.