Делаем скрипт для управлением d-link 3526
Во время работы в Corbina Telecom была задача забекапить все свичи, ну чтож не проблема. Начал искать решение и чисто случайно наткнулся на expect.
В принципе скрипт получился элементарным, не особо красивый и тд.
Пошел я таким путем, создал 3 файлика
1. sw.sh — скрипт перебора по файлу sw.txt
2.sw.exp — собственно сам скрипт который осуществляет telnet к свичу и выполнение списка команд
3.sw.txt — список с ip адресами свичей
Приступим.
Создаем создаем директорию для хранения скриптов.
Создаем файл со списком ip-адресов.
Содержание файла.
Далее создаем скрипт.
Пишем следующее:
Скриптик как видите перебирает по строчкам файл sw.txt и «вставляет» ip в скрипт sw.exp
Далее создаем сам скрипт sw.exp.
По строчкам.
Передаем первый 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 скрипт раз в неделю пусть бекапит.
Можно и прошивать пачками, короче управляют свичами как надо.
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 комментариев