我正在尝试创建一个期望脚本,该脚本可以自动备份我们的Extreme交换机的配置文件。我需要每个配置文件都具有唯一的名称,以便我可以区分它们,我想为此使用sysname。在Extreme交换机上,系统名称以以下格式显示在每行上:
ITSwitch.1#
ITSwitch.2#
我需要知道的是如何捕获“。”之前的所有字符。因此我可以将其设置为变量,并在将其上传到我们的tftp服务器之前使用它来创建新的配置文件。我只是最近才开始期待脚本编写,但是这似乎很简单,我只是想念它。任何帮助将非常感激。
答案 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) }
{# ?$}
}