Можно ли установить код выхода «ожидать»

Следующий скрипт 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 в моем случае, который требует хотя бы однократной настройки.


person Miles Chen    schedule 26.11.2013    source источник
comment
Я мог бы ответить на этот вопрос, но окажу вам медвежью услугу. (1) Вы должны отключить PermitRootLogin в sshd_config, затем подключиться как обычный пользователь и sudo для повышения привилегий. (2) Используйте ключи ssh, никогда не вводите пароль (особенно root!) в скрипт.   -  person ghoti    schedule 26.11.2013
comment
Чтобы получить статус выхода: stackoverflow.com/q/3299502/7552   -  person glenn jackman    schedule 26.11.2013
comment
Ваш ожидаемый сценарий заключен в двойные кавычки, поэтому оболочка заменит $? до ожидаемого запуска сценария.   -  person glenn jackman    schedule 26.11.2013


Ответы (1)


person    schedule
comment
Я использую expect -c "set result_code 88..." и получаю sh: result_code: Parameter not set. Кто-нибудь может сказать, почему? - person Jakub P; 07.10.2014