Делаем скрипт для управлением d-link 3526

Во время работы в Corbina Telecom была задача забекапить все свичи, ну чтож не проблема. Начал искать решение и чисто случайно наткнулся на expect.
Expect — инструмент для автоматизации и тестирования в ОС Unix, написанный Don Libes как расширение к скрипт-языку Tcl, для интерактивных приложений таких, как telnet, ftp, passwd, fsck, rlogin, tip, ssh, и других. С помощью Tk интерактивные приложения могут быть использованы с графическим интерфейсом (GUI) X11.
1) Устанавливаем expect:

 # cd /usr/ports/lang/expect
 # make install clean
 # rehash

В принципе скрипт получился элементарным, не особо красивый и тд.
Пошел я таким путем, создал 3 файлика
1. sw.sh — скрипт перебора по файлу sw.txt
2.sw.exp — собственно сам скрипт который осуществляет telnet к свичу и выполнение списка команд
3.sw.txt — список с ip адресами свичей
Приступим.
Создаем создаем директорию для хранения скриптов.
#mkdir /dlink
 #cd /dlink

Создаем файл со списком ip-адресов.
#ee sw.txt

Содержание файла.

 10.xx.xx.xx
 10.xx.xx.xx
 .............
 10.xx.xx.xx

Далее создаем скрипт.
#ee sw.sh

Пишем следующее:
#!/bin/sh
 killall sw.sh
 cat /dlink/sw.txt | while read line
 do
 echo "$line"
 expect /dlink/sw.exp $line
 done
 echo

Скриптик как видите перебирает по строчкам файл sw.txt и «вставляет» ip в скрипт sw.exp
Далее создаем сам скрипт sw.exp.

 #!/usr/local/bin/expect
 spawn telnet [lindex $argv 0]
 expect "Username:"
 send "username\n"
 expect "Password:"
 send "password\n"
 send "enable admin\r"
 expect "Password:"
 send "password\n"
 send "upl cfg_toTFTP 10.xx.xx.xx [lindex $argv 0].cfg\r"
 sleep 10
 send "logout\r"
 send eof

По строчкам.
Передаем первый ip адрес из файла sw.txt и при помощи telnet`a подключаемся к нему, ожидаем строчку «Username:» если такова есть то вводим имя пользователя, так же с поролем, в 3526 и других d-link когда идет соединение с помощью телнета то мы не привелигерованый пользователь, который не может выполнить ничего «хорошего», у меня же задача была слить файл конфига на tftp сервер, делаем себя админом, посылая на коммутатор команду enable admin и ждем приглашение ввода пароля, получаем строчку с приглашение и вводим пароль, все вроде админы.
Тогда выполняем все что нам нужно в частности команду upl cfg_toTFTP 10.xx.xx.xx [lindex $argv 0].cfg, то есть сохраняем файл конфигурации свича на удаленный tftp сервер с именем взятым из ip.cfg, то есть если у нас свитч имел ip адрес 10.10.10.10, то на выходе мы получим файл на удаленном tftp сервере 10.10.10.10.cfg,
потом отсылаем выход со свича посылая на железяку команду logout.

Ну принципе и все, поднимаем tftp сервер если нет, запихиваем в cron скрипт раз в неделю пусть бекапит.
Можно и прошивать пачками, короче управляют свичами как надо.


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.