[Expect Script] Отдельные файлы журнала для каждого устройства
Мой код генерируется для одного файла журнала вывода с нескольких устройств.
Как мы могли бы отделить каждое устройство для каждого вывода файла журнала?
Вот мой код:
#!/usr/bin/expect -f
#Slurp up the input file
set fp [open "ip.txt" r]
# To avoid empty lines, 'nonewline' flag is used
set file_data [read -nonewline $fp]
close $fp
set prompt ">"
log_file -noappend router_status.txt
foreach ip [split $file_data "\n"] {
puts "Router $ip Interface Status"
spawn telnet $ip
expect "Username:"
send "username\r"
expect "assword:"
send "password\r"
expect $prompt
# To avoid sending 'Enter' key on huge configurations
send "show interface description\r"
expect {
-ex "---(more" { send -- " "; exp_continue }
"*>" { send "exit\r" }
}
set timeout 3; # Reverting to default timeout
# Sending 'exit' at global level prompt will close the connection
expect eof
}
2 ответа
Вы можете просто достичь этого, изменив log_file
foreach ip [split $file_data "\n"] {
puts "Router $ip Interface Status"
spawn telnet $ip
# Altering 'log_file' for each ip
log_file -noappend router_${ip}_status.log
# Your further code here...
}
Чтобы обработать «невозможно начать ведение журнала без предварительного прекращения ведения журнала», используйте «log_file» без аргументов для прекращения ведения журнала, затем «log_file path/to/file.log».