Для смены настроек на одном, или 10ке коммутаторов можно воспользоваться веб интерфейсом, или телнетом. Но даже при работе на таком кол-ве коммутаторов, можно совершить ошибку. А когда коммутаторов больше 100 сотни, или тысячи то данная задача становится уже слишком сложной.
Скрипт простенький, и даже не скрипт, а рабочий набросок
Spoiler |
SelectПоказать> |
#!/usr/bin/expect -f
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
set prompt "(%|#|\\$) $";
catch {set prompt $env(EXPECT_PROMPT)}
log_file -noappend expect_log.log
# Отключим вывод
log_user 0
set timeout 10
spawn telnet $ip
# Вывод отладки
#exp_internal 1
expect "UserName:"
send "$user\n"
expect "PassWord:"
send "$password\n"
log_user 1
expect -re $prompt
expect "Fail!" {
send_user "\n\nПароль не верный!\n"
exit 1
}
# Отлов ошибки в авторизации
#expect eof
send "enable snmp\r"
#puts stdout "Snmp was enabled.\r"
send "enable sntp\r"
send "config sntp primary ntp.1.ru secondary ntp.2.ru poll-interval 720\r"
send "config time_zone operator + hour 3 min 0\r"
send "delete snmp community public\r"
send "delete snmp community private\r"
send "create snmp community publicity view CommunityView read_write\r"
send "create snmp view all 1 view_type included\r"
send "create snmp group mon v3 auth_nopriv read_view all write_view all notify_view all\r"
send "create snmp user snmpuser mon encrypted by_password auth md5 snmppass priv des snmppass\r"
send "save all\r"
# Запоминаем результат в переменной. Он может быть отображён, или записан на диск.
# set results $expect_out(buffer)
sleep 5
send "logout\r"
send eof
|
Параметры запуска:
./sw.exp ipaddress user password
Параметры в скрипте:
- ntp.1.ru и ntp.2.ru ip адреса ваших ntp серверов.
- snmpuser имя для snmp пользователя
- snmppass ваш snmp пароль.