Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tcl 使用Expect,如何从文件中提取特定值并输入Expect脚本的变量_Tcl_Expect - Fatal编程技术网

Tcl 使用Expect,如何从文件中提取特定值并输入Expect脚本的变量

Tcl 使用Expect,如何从文件中提取特定值并输入Expect脚本的变量,tcl,expect,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地址执行路由器BGP命令的原因 #!/usr/bin/expect set

我有两个文件。一个名为bgp_ip.log,另一个名为bgp.sh的expect脚本

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

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

使用此变量以便下面的脚本能够基于从BGP_IP.log获得的IP地址执行路由器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
}
#/usr/bin/expect
设置用户名“testaccount”
设置密码“testaccount”
设置主机名“R-KANSAS-01”

设置BGP_IP“???”您需要读取文件并从中获取数据

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之前添加此代码