0

私のコードは、複数のデバイスから出力された 1 つのログ ファイルに対して生成されます。

ログ ファイル出力ごとに各デバイスを分離するにはどうすればよいでしょうか。

これが私のコードです:

#!/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
    }
4

1 に答える 1

1

を変更するだけで簡単に実現できます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...


}
于 2015-12-02T05:31:00.790 に答える