Проблема в том, что файл создается на удаленном хосте, но вы пытаетесь прочитать его локально. Если у вас нет общей файловой системы между ними (очень не по умолчанию; вы бы не задавали этот вопрос, если бы у вас было!), Это не сработает.
Вместо этого вы хотите, чтобы информация записывалась удаленно в формате, который легко усваивается , а затем вы анализируете ее локально. Часть форматирования - это то, что вам нужно подумать о том, чтобы двигаться вперед, но вот и все остальное:
spawn telnet 10.10.10.10
expect "login:*"
send "XXXXXX\r"
expect "Password*"
send "XXXXX\r"
expect "#"
send "ls -lrt\r"
# Create the accumulator so that won't be surprised if there's no remote output
set entry {}
# This is the multi-clause version of the expect command
expect {
"#" {
# Got a prompt; drop out of the expect
}
-re {^.*$} {
# Got some other line; save and wait for the next one
lappend entry $expect_out(0,string)
exp_continue; # <<< MAGIC; asks expect to keep waiting
}
}
foreach line $entry {
puts "$line\n"
}
exit
Почти все вопросы о том, как автоматизировать что-то немного сложное с Expect, похоже, заканчиваются использованием версии expect
с несколькими предложениями и подходящими exp_continue
вызовами.