Назад | Перейти на главную страницу

Ожидаемый сценарий не печатает (cat) файл на удаленном сервере

У меня есть сценарий ожидания, который проверяет, существует ли файл на удаленном сервере, а затем пытается распечатать (используя cat) его, если он

По какой-то причине сценарий ожидания игнорирует эти команды.

send "if {[file exists "./abc.test"]} {cat ./abc.txt\r}"

Вот что я сделал, и теперь это сработало

cat /some/path/abc.txt 2> /dev/null

Таким образом, файл будет распечатан, если он существует, и не выдаст ошибку, если это не так.

Я никогда не использовал Expect, но ваш пример кода ...

if {[file exists "./abc.test"]} {send "cat ./abc.txt\r"}

... похоже, проверяет наличие файла на ожидаемой машине, а не на удаленной. Поэтому, если сценарий не запущен на удаленном сервере, он не будет работать.

Хм, ты, наверное, делаешь что-то довольно окольным путем.

Сначала опишите свой контекст:

  • Как именно (полная командная строка) вы вызываете этот сценарий?
  • Как он получает доступ к удаленному серверу? В предоставленном вами скрипте нет удаленного доступа.

Наконец, что вы на самом деле пытаетесь сделать? Если вы хотите распечатать файл в удаленной системе, вероятно, проще напрямую вызвать ssh. Expect предназначен для программ-сценариев, не имеющих языка сценариев (например, простых ftp-клиентов). Излишне сложно использовать его с командной оболочкой, в которой уже есть мощный язык сценариев.