我正在尝试使用 expect 登录到设备,获取配置并将其写入文件(我不能使用 ssh 密钥,设备不支持它,并且该东西实际上有两个登录名)。
问题是当我使用它时,数据被截断(我只得到配置文件的最后约 100 行):
...snip...
match_max 100000
set timeout 150
set output [open "outputfile.txt" "w"]
set config $expect_out(buffer)
puts $output $config
close $output
...snip...
所以现在,根据我在某处读到的建议,我正在尝试使用 expect 来循环输出,一次一行,但我无法像没有循环那样让数据输出。这是不起作用的代码。配置约为 700 行。
#!/usr/bin/expect
match_max 50000
spawn ssh admin@192.168.1.10
expect "password"
send "password1\r"
expect "user"
send "root\r"
expect "password"
send "password2\r"
set outcome {}
set writeout [open "outputfile.txt" "w"]
expect "device"
exp_send "show running\r"
expect {
-regexp {.*}{
set outcome "${outcome}$expect_out(0,string)"
exp_continue
}
}
puts $writeout $outcome
close $writeout
expect "device"
send "exit\r"
send "yes\r"
任何帮助将不胜感激。如果您需要更多信息,请告诉我。
谢谢!