автоматизировать получение диагностических файлов из контроллера с помощью команд ssh - PullRequest
0 голосов
/ 18 мая 2018

Я хотел бы автоматизировать получение диагностических файлов от контроллера, который отвечает на команды ssh, например,

ssh diag@controller tarred > diags.tgz

К сожалению, мне нужно ввести пароль, чтобы выполнить указанную выше команду.Что я обдумал, чтобы обойти это:

  1. с использованием ключей ssh: невозможно, так как я не могу войти в контроллер, он просто ожидает команды и не предлагает оболочку
  2. с использованием пакета ssh-pass: у меня нет прав администратора на машине, и я не могу устанавливать пакеты
  3. с использованием «ожидаемо»: работает до некоторой степени, но полученный файл поврежден.

Вот сценарий «ожидаем», который я использовал:

#!/usr/bin/expect -f
log_user 0
set timeout 300
spawn ssh diag@controller tarred
expect "?assword:"
send "unrealpassword\r"
expect \r\n
log_user 1
expect eof

Этот сценарий гарантирует, что только требуемый вывод будет сохранен с командами «log_user» до тех пор, пока не встретится eof.

Я передал этот скрипт в файл, и этот файл поврежден, то есть он слишком короткий (из-за тайм-аута?) Или слишком длинный (?).Любая идея о том, что здесь идет не так .?

...