Я подключаюсь к системе по 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
использовании в командной строке.