Ожидаемый скрипт не печатает (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). Нет необходимости использовать его с командной оболочкой, которая уже имеет мощный язык сценариев.