获取Expect中传递给spawn_id的变量值

时间:2017-02-27 12:23:43

标签: ssh expect

我设法编写了一个简单的expect脚本来备份多个路由器配置。这种方法很好但在设备列表增长时需要一些时间。

我试图找到一种同时生成SSH会话的方法,并遇到了article

# spawn all connections
foreach conn $allconnections {

spawn telnet $conn
lappend spawn_id_list $spawn_id

}

# run expect script for all connections individually
foreach id $spawn_id_list {

# this is important - for unknown (to me) reasons
set spawn_id $id

send "your_send_message"
expect "your_expect_pattern"

}

这似乎有效但我现在面临着创建以实际设备命名的备份文件的另一个挑战。当$ conn传递给spawn_id并且我基于$ id_configs.txt创建备份文件时,我只得到“expN”,其中N是一个数字,当读取设备列表中的每一行时,该数字递增。我一直在试验如何将实际的$ id值重新用作文件名但尚未找到解决方案。

感谢你们的任何意见。提前谢谢!

1 个答案:

答案 0 :(得分:0)

% set pid [spawn telnet xx.xx.xxx.xx]
spawn telnet xx.xx.xxx.xx
29353
% set pid
29353

spawn返回正在生成的任何程序的进程ID。您可以将其保存在变量中并进一步使用。