Часто в работе системного/сетевого администратора приходится обслуживать большое количество устройств.

Правильные инженеры стараются автоматизировать свою работу, написать скрипты, тем самым разгрузив себя от рутины. Охота рассказать об одном из таких способов автоматизации.

Рассматривать мы будем такую утилиту как Expect.

Expect — инструмент для автоматизации и тестирования в ОС Unix, написанный Don Libes как расширение к скрипт-языку Tcl, для интерактивных приложений таких, как telnet, ftp, passwd, fsck, rlogin, tip, ssh, и других. (wiki) .
Эту утилиту мы взяли потому что она позволяет в интерактивном режиме взаимодействовать с различными устройствами по вышеописанным протоколам.
Эта функция будет нам крайне полезна.

Рассмотрим работу Expect на примере конкретной задачи. Нам необходимо удалить vlan 100 с 1000 коммутаторов. Коммутаторы у нас примерно одной модели, производитель D-Link.
С помощью Expexct это можно сделать следующим образом.

[bash]
# cat expect_task_1.sh
#!/usr/bin/expect
set switchip [lindex $argv 0]
set user "admin"
set password "admin"
set vlanName [lindex $argv 1]

spawn telnet "$switchip"

expect "UserName:"
send "$user\r"
expect "PassWord:"
send "$password\r"
expect -re "#"
send "delete vlan $vlanName\r"
expect -re "#"
send "logout\r"
[/bash]