使用Sysname在Expect脚本中创建变量

时间:2018-12-12 20:07:33

标签: expect

我正在尝试创建一个期望脚本,该脚本可以自动备份我们的Extreme交换机的配置文件。我需要每个配置文件都具有唯一的名称,以便我可以区分它们,我想为此使用sysname。在Extreme交换机上,系统名称以以下格式显示在每行上:

ITSwitch.1#

ITSwitch.2#

我需要知道的是如何捕获“。”之前的所有字符。因此我可以将其设置为变量,并在将其上传到我们的tftp服务器之前使用它来创建新的配置文件。我只是最近才开始期待脚本编写,但是这似乎很简单,我只是想念它。任何帮助将非常感激。

1 个答案:

答案 0 :(得分:0)

不像您希望的那么容易。在远程系统上,只需按Enter即可显示新的提示,然后对提示进行正则表达式匹配以提取sysname:

send "\r"
expect -re {\r\n([^.]+).* # ?$}
set sysname $expect_out(1,string)

方案B:假设sysname中没有空格:

send "show switch\r"
expect -re {
    {Sysname: (\S+)} { set sysname $expect_out(1,string) }
    {# ?$}
}