сеанс ssh не закрывается в скрипте bash

сеанс ssh не закрывается в скрипте bash

Я подключаюсь к системе по ssh и перезагружаю ее в цикле while, однако сессия ssh не закрывается, поэтому скрипт просто зависает после первой перезагрузки. Я пробовал разные способы закрыть его, есть идеи? Я никогда не дохожу до echo "теста".

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

сброс.sh

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

решение1

Может произойти так, что удаленный сеанс будет потерян, когда вы запрашиваете перезагрузку, и система некоторое время будет зависать, ожидая ответа удаленной системы.

Я бы перед этим ввел sshpassкоманду тайм-аута, timeoutнапример timelimit:

timeout 10s sshpass ...

Что касается sshслужб, старайтесь избегать использования паролей и вместо этого используйте аутентификацию по сертификату RSA. Не уверен насчет этой конкретной команды sshpass, но часто, если вызываемый двоичный файл не принимает меры предосторожности, пароль можно увидеть при psиспользовании в командной строке.

Связанный контент