使用Expect,如何从文件中提取某些值并输入到Expect脚本的变量中

时间:2014-08-21 05:12:50

标签: tcl expect

我有两个文件。一个叫做bgp_ip.log,另一个是名为bgp.sh

的expect脚本

bgp_ip.log只包含一个IP地址,该地址由另一个名为getip.sh的脚本输入到该文件中,该脚本工作正常。

现在我试图找出如何让bgp.sh在bgp_ip.log中提取IP地址并将其放入变量容器中。在此脚本上下文中,变量容器称为$ BGP_IP,如下面的脚本所示:

拥有此变量以便以下脚本能够根据从bgp_ip.log获取的IP地址执行Router BGP命令的原因

#!/usr/bin/expect

set username "testaccount"

set password "testaccount"

set hostname "R-KANSAS-01"

set BGP_IP "?????" <<<< I'm not sure how can I extract the IP from bgp_ip.log and place into this variable

spawn telnet "$hostname"

expect "login: " {
  send "$username\n"
  expect "Password: "
  send "$password\n"
  expect "> "

send "show bgp summary instance $BGP_IP\n"

log_file "R-KANSAN-01_temp.log"

log_user 1

expect "#"


send "exit\n"; exit 0

  interact
}

感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

您需要读取文件并从中获取数据

set file_name "bgp_ip.log"

set fp [open $file_name "r"]
set BGP_IP [read $fp]
close $fp

变量BGP_IP将保存IP地址。我假设该文件只包含IP地址而没有别的。

如果没有,那么您需要regexp才能获得它。

只需在代码中生成telnet之前添加此代码即可。