Создание переменной в сценарии Expect с использованием Sysname - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь создать ожидаемый сценарий, который может автоматически создавать резервные копии файлов конфигурации наших переключателей Extreme.Мне нужно, чтобы у каждого файла конфигурации было уникальное имя, чтобы я мог отличить их друг от друга, и я хотел бы использовать для этого sysname.На переключателях Extreme имя sysname отображается в каждой строке в следующем формате:

ITSwitch.1 #

ITSwitch.2 #

Все, что мне нужно знать, это как захватить всесимволы перед «.»поэтому я могу установить его как переменную и использовать его для создания новых файлов конфигурации, прежде чем загружать их на наш сервер tftp.Я только недавно начал изучать сценарии, но мне кажется, что мне просто не хватает этого.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 13 декабря 2018

Не так просто, как вы надеетесь.В удаленной системе просто нажмите Enter, чтобы показать новое приглашение, и сопоставьте регулярное выражение с запросом на извлечение имени пользователя:

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

План Б: при условии отсутствия пробела в имени пользователя:

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