Я использую SSHPASS для настройки устройства на базе Linux через временный IP-адрес в целях автоматизации.
sshpass -p $TARGET_password ssh -o StrictHostKeyChecking=no $TARGET_username@$TARGET_IP 'bash -s' < $configfile
Я отправляю скрипт с кучей команд, последняя из которых — настройка постоянного IP-адреса.
Как только скрипт меняет IP, он зависает, так как теряет сеанс с временным IP.
Так возможно ли отправить команду, которая меняет IP, и немедленно отключиться, не дожидаясь ответа?
решение1
Сделать так, чтобы он отключилсядоон меняет адрес. Например, сделайте так, чтобы последняя команда выполнялась в фоновом режиме с &
оператором, может быть, что-то вроде этого:
( (sleep 1; ip addr change ...) &)
У SSHPASS нет надежного способа узнать, получает ли он ACK из-за того, что команда была выполнена успешно (и IP-адрес изменился), или из-за того, что пакеты команд не достигли сервера.совсем(из-за проблем с сетью). В первом случае вы хотите, чтобы он отключился, но во втором случае он должен продолжать повторно передавать неподтвержденные пакеты.