Что нового

[Сеть, интернет] Перезагрузка Cisco 881 и перезагрузка GRE при потере пингов

Evil-S[MLZ]

Новичок
Сообщения
6
Репутация
0
AutoIt: 3.
Версия: 1.0

Категория: Администрирование, Автоматизация, Вспомогательные функции Интернет,Командная строка,Сеть, Разное, Cisco.

Описание: Постоянно мучался зависаниями сети в филиале(тухнет GRE и теряется сеть Интернет) - из-за приколов у провайдера, и в один день мне это надоело, быстренько написал свое решение, которое перезапускается планировщиком задач Windows каждый час. Головная боль пропала.
Понимаю что костыль - но у провайдера есть приколы с зависшей сессией, и такой вариант работает уже 5-й месяц.
Код Перезагрузки Роутера /Пример:
Код:
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.10.2
 Author:         EvilSMLZ

 Основное назначение:
	v1. Перезагрузка Cisco роутера при потере пинга.

#ce ----------------------------------------------------------------------------
ConsoleWrite("Скрипт запущен, " & @MDAY & "/" & @MON & " " & @HOUR & ":" & @MIN & @CRLF)
; Script Start - Add your code below here
Sleep (10000)
#include <Timers.au3> ; Стандартная библиотека

Do ;Включаем цикл
$starttime = _Timer_Init(); Включаем таймер
$SleepTime=5*60*1000; Ждем 5 минуты
$ask = Ping("www.ya.ru",1000) ; Пингуем до яндекса
Sleep (30000) ; Ждем 30 секунд
$ask2 = Ping("8.8.8.8",1000) ; Пингуем до гугла
If $ask And $ask2 Then
	  ConsoleWrite(" В онлайне, задержка ответа: Яндекс " & $ask & " Гугл  "  & $ask2 & @CRLF)
; если не пингуется до яндекса и гугла то
Else
		Opt("SendKeyDelay", 100)
	ConsoleWrite("Начата перезагрузка роутера, " & @MDAY & "/" & @MON & " " & @HOUR & ":" & @MIN & @CRLF)
	Run("C:\Program Files (x86)\PuTTY\putty.exe") ; запускаю putty
	WinWaitActive("PuTTY Configuration") ; активное окно PuTTY Configuration
	Send("IP") ;ввожу адрес сетевого ресурса к которому надо подключиться - Cisco Router
	Send("{ENTER}") ; подключаюсь
	WinWaitActive("[CLASS:PuTTY]") ; активным окно PuTTY Security Alert c вопросом о генерации ключей
	; а после этого у меня появляется черное окно с приглашнением на ввод логина и соответсвенно потом пароля, но что-то я делаю не так и логин и пароль не вводится
	WinActivate("[CLASS:PuTTY]", "")
	Send("user") ; Логин
	Send("{ENTER}")
	Send("pass")  ; Пароль
	Send("{ENTER}")
	Send("reload") ;Команда перезагрузки
	Send("{ENTER}")
	Send("yes")    ; Соглашение с перезагрузкой
	Send("{ENTER}")
	ConsoleWrite("Роутер перезагружен")
	EndIf
$SleepTime=$SleepTime - _Timer_Diff($starttime)
Sleep ($SleepTime)
Until False

Код Перезагрузки Gre /Пример:
Код:
#cs ----------------------------------------------------------------------------
 
 AutoIt Version: 3.3.10.2
 Author:         EvilSMLZ
 
 Основное назначение:
        v1. Перезагрузка Cisco GRE туннеля потере пинга
        v2. Мелкая правка и исправление падений
 
#ce ----------------------------------------------------------------------------
ConsoleWrite("Скрипт запущен, " & @MDAY & "/" & @MON & " " & @HOUR & ":" & @MIN & @CRLF)
; Script Start - Add your code below here
Sleep (10000)
#include <Timers.au3> ; Стандартная библиотека
 
Do ;Включаем цикл
$starttime = _Timer_Init(); Включаем таймер
$SleepTime=5*60*1000; Ждем 5 минуты
$ask = Ping("10.0.3.1",1000) ; Пингуем до яндекса
Sleep (30000) ; Ждем 30 секунд
$ask2 = Ping("10.0.2.1",1000) ; Пингуем до гугла
If $ask And $ask2 Then
          ConsoleWrite(" В онлайне, задержка ответа: Vlan2 " & $ask & " Vlan2  "  & $ask2 & @CRLF)
; если не пингуется до яндекса и гугла то
Else
                Opt("SendKeyDelay", 100)
        ConsoleWrite("Начата перезагрузка роутера, " & @MDAY & "/" & @MON & " " & @HOUR & ":" & @MIN & @CRLF)
        Run("C:\Program Files (x86)\PuTTY\putty.exe") ; запускаю putty
        WinWaitActive("PuTTY Configuration") ; активное окно PuTTY Configuration
        Send("IP") ;ввожу адрес сетевого ресурса к которому надо подключиться(Cisco)
        Send("{ENTER}") ; подключаюсь
        WinWaitActive("[CLASS:PuTTY]") ; активным окно PuTTY Security Alert c вопросом о генерации ключей
        WinActivate("[CLASS:PuTTY]", "")
        Send("user") ; Логин
        Send("{ENTER}")
        Send("PASS")  ; Пароль
        Send("{ENTER}")
        Send("conf t") ;Интерфейс конфигуратора
        Send("{ENTER}")
        Send("interface Tunnel0")    ; Выбираем Интерфейс GRE канала
        Send("{ENTER}")
        Send("shutdown") ;Выключаем туннель
        Send("{ENTER}")
        Send("no shutdown") ; Включаем туннель
        Send("{ENTER}")
        Send("end") ;Выходим из конфигуратора
        Send("{ENTER}")
        Send("write") ;Записываем изменения - чтобы скрипт перезагрузки не спрашивал о изменениях.
        Send("{ENTER}")
        Send("exit") ;Выходим из Putty
        Send("{ENTER}")
        ConsoleWrite("GRE перезагружен")
        EndIf
$SleepTime=$SleepTime - _Timer_Diff($starttime)
Sleep ($SleepTime)
Until False

Скрипты на Pastebin:
Reload http://pastebin.com/YD8t74ep
Gre http://pastebin.com/PJx4LjPw

Скрипты исполнения должны лежать в папке совместно с Putty
Все файлы для пущей безопасности и упрощения откомпилированы в *.exe
Пример .bat файла в планировщике задач
@taskkill /F /IM Reload_Ciscov2.exe
@start C:\PSTools\Cisco_reload\Reload_Ciscov2.exe
@taskkill /F /IM cmd


Evil-S[MLZ]
 

ildar

Осваивающий
Сообщения
252
Репутация
29
А не проще так
Код:
Run("cmd")
Sleep(1000)
ControlSend("","","","telnet.exe X.X.X.X{enter}")
Sleep(1000)
ControlSend("","","","admin{enter}") ; логин
Sleep(1000)
ControlSend("","","","admin{enter}") ; пароль
Sleep(1000)
ControlSend("","","","reload{enter}")
Sleep(5000)
ControlSend("","","","{enter}")
ControlSend("","","","Exit{enter}")
 
Автор
E

Evil-S[MLZ]

Новичок
Сообщения
6
Репутация
0
ildar сказал(а):
А не проще так
Код:
Run("cmd")
Sleep(1000)
ControlSend("","","","telnet.exe X.X.X.X{enter}")
Sleep(1000)
ControlSend("","","","admin{enter}") ; логин
Sleep(1000)
ControlSend("","","","admin{enter}") ; пароль
Sleep(1000)
ControlSend("","","","reload{enter}")
Sleep(5000)
ControlSend("","","","{enter}")
ControlSend("","","","Exit{enter}")

Телнет запрещен внутри компании. Только SSH2.
 
Верх