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

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

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

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

3 ответа

Решение

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам