SSH-Sitzung wird im Bash-Skript nicht geschlossen

SSH-Sitzung wird im Bash-Skript nicht geschlossen

Ich stelle per SSH eine Verbindung zu einem System her und starte es in einer While-Schleife neu, die SSH-Sitzung wird jedoch nicht geschlossen, sodass das Skript nach dem ersten Neustart einfach hängt. Ich habe verschiedene Möglichkeiten ausprobiert, es zu schließen, hat jemand eine Idee? Ich komme nie zum Echo-„Test“.

#!/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

zurücksetzen.sh

#! /bin/sh
if [  -e /dev/ttyUSB2 ]  && [  -e /dev/ttyUSB5 ]; then {
reboot -f
}
fi

Antwort1

Möglicherweise geht die Remote-Sitzung verloren, wenn Sie einen Neustart anfordern. Das System bleibt daher einige Zeit hängen, während es auf die Antwort des Remote-Systems wartet.

Ich würde vorher sshpasseinen Timeout-Befehl einführen, etwa timeoutso timelimit:

timeout 10s sshpass ...

Vermeiden Sie bei sshDiensten möglichst die Verwendung von Passwörtern und verwenden Sie stattdessen die RSA-Zertifikatauthentifizierung. Ich bin mir bei diesem speziellen sshpass-Befehl nicht sicher, aber wenn die aufgerufene Binärdatei keine Vorsichtsmaßnahmen trifft, kann das Passwort häufig angezeigt werden, pswenn es in der Befehlszeile verwendet wird.

verwandte Informationen