Я пытаюсь достичь следующих с Баш скрипт:Удаленный SSH и выполнение команд с помощью BASH и Ожидать
- попытки для подключения SSH, если не удается, ошибка, если SSH соединение
- раз подтвердил выполните команду «сверху» и сохранить результаты в файл
- Scp файл обратно с удаленного сервера
Я знаю invidiual команды, которая будет: 1), чтобы проверить соединение SSH:
ssh -q [email protected] exit
echo $?
Это должно возвращать '0' на успех и '255' об ошибке.
2) для выполнения верхней и сохранить файл будет:
top -n 1 -b > /tmp/top.out
3) ПКПП назад файл с удаленного хоста
expect -c "
set timeout 1
spawn scp [email protected]:/tmp/top.out [email protected]:/.
expect yes/no { send yes\r ; exp_continue }
expect password: { send password\r }
expect 100%
sleep 1
exit
"
Теперь положить это вообще моя проблема, чтобы быть более конкретным :
Возможно, я не могу получить возвращаемые значения «0» и «255» при использовании ожидающих tes t соединение SCP.
- Я не могу показаться, чтобы быть в состоянии выполнить верхнюю команду, используя ожидать снова, то это не работает:
ожидать -c " Тайм-аут 1 икру SSH пользователь @ хост сверху -n 3 -b> /tmp/top.out ожидать пароль: {отправить пароль \ г} сна 1 выхода "
- и поэтому третий бит не прист k.
Любая помощь приветствуется. Пожалуйста, имейте в виду, что мой скрипт является сценарием .sh с объявлением #!/Bin/bash. Я не могу использовать #!/Usr/bin/expect по различным причинам.
Если у вас есть исходный дистрибутив или пакеты ожидающих решений вашей системы, вы должны иметь autoexpect. Возможно, вы захотите запустить свои команды в интерактивном режиме и посмотреть, что такое autoexepect думает, что разговор должен выглядеть. –
Это именно так, как это делается в моей компании, это не моя ошибка, поэтому я просто пытаюсь извлечь максимум из этого. – Tamas