Следующий скрипт bash не работает, потому что команда «ожидать» всегда возвращает 0 независимо от того, какой код выхода удаленного скрипта /tmp/my.sh возвращается.
любая идея, чтобы заставить его работать? Благодарю.
#!/usr/bash
user=root
passwd=123456abcd
host=10.58.33.21
expect -c "
spawn ssh -o StrictHostKeyChecking=no -l $user $host bash -x /tmp/my.sh
expect {
\"assword:\" {send \"$passwd\r\"}
eof {exit $?}
}
"
case "$?" in
0) echo "Password successfully changed on $host by $user" ;;
1) echo "Failure, password unchanged" ;;
2) echo "Failure, new and old passwords are too similar" ;;
3) echo "Failure, password must be longer" ;;
*) echo "Password failed to change on $host" ;;
esac
Отредактировано 27 ноября 2013 г., 10:23
Спасибо за комментарии. Позвольте мне еще раз подчеркнуть проблему,
Предполагается, что основной скрипт будет работать на Linux-сервере A без вывода сообщений, во время которого он вызывает другой скрипт my.sh на сервере B автоматически. Вопрос в том, как получить код выхода my.sh?
Вот почему я не могу использовать подход ssl_key в моем случае, который требует хотя бы однократной настройки.
PermitRootLogin
в sshd_config, затем подключиться как обычный пользователь иsudo
для повышения привилегий. (2) Используйте ключи ssh, никогда не вводите пароль (особенно root!) в скрипт. - person ghoti   schedule 26.11.2013$?
до ожидаемого запуска сценария. - person glenn jackman   schedule 26.11.2013