пятница, 11 мая 2012 г.

модем ZXV10 H108L, telnet и скрипты VBS

Продолжаем тему. Начало здесь.
И так мы научились дистанционно перегружать модем.  Но в данной ситуации это возможно только при ручном запуске скрипта. А как быть если необходимо перегрузить модем в наше отсутствие. Например при скачивании из интернета возможность автоматически отслеживать наличие интернета и перегружать модем в случае его пропадания нам очень пригодится.
Что нам нужно для того чтобы автоматизировать процесс. Что нам сразу приходит в голову так это команда ping и оказывается WMI тоже знает про нее. Значит создаем пустой файл, например CheckInternet.vbs и помещаем в него код.


Set wshShell = WScript.CreateObject("WScript.Shell")
Set oWMI = GetObject("winmgmts:\\.\root\cimv2")
'адреса логины пароли
IP_Gate = "195.5.5.202"
IP_Modem = "192.168.1.1"
Login_Modem = "root"
Passw_Modem = "root"
If bPing(IP_Gate,3) Then
'Эту строку можно заремить чтобы не мелькало сообщение о наличии интернета
    wshShell.Popup "Текущее время" & VbCrLf & Time(),3,"Gate ON Line",64
Else
    If bPing(IP_Modem,3) Then
        RebootModem()
    Else
        wshShell.Popup "Модем не отвечает" & VbCrLf & "Перезагрузка невозможна",3,"Ошибка",64
    End if
End If

Function bPing(IP_Adr,nCount)
bPing = False
For i = 1 to nCount
    Set IP_List = oWMI.ExecQuery("Select * from Win32_PingStatus Where Address='" & IP_Adr & "'")
    For Each item in IP_List
        If item.StatusCode = 0 Then
            bPing = True
            Exit Function
        End If
    Next
Next
End Function

Function RebootModem
    wshShell.Popup "модем будет перезагружен через 5 сек.",5, "Пропал интернет", 16
    wshShell.Run "telnet.exe "  & IP_Modem
    WScript.Sleep 1000
    wshShell.SendKeys Login_Modem & vbCr
    WScript.Sleep 1000
    wshShell.SendKeys Passw_Modem & vbCr
    WScript.Sleep 1000
    wshShell.SendKeys "reboot~"
    WScript.Sleep 6000
    Set ProcList = oWMI.ExecQuery("Select * from Win32_Process Where Name = 'telnet.exe'")
    For Each oProc in ProcList
        oProc.Terminate()
    Next
End Function

Что делает данный скрипт. Пингует следующий за модемом IP адрес и если он не отвечает то перегружает модем. Адрес определяем с помощью команды tracert
image

Осталось немного, заставить скрипт автоматически запускаться. Для этого у нас есть планироващик расположеныей в панели упровления и называемый “Назначенные задания”

image

Открываем его и выбираем “Добавить здание”  В появившемся “Мастере планирования зданий” нажимаем кнопку “Далее” затем в следующем окне нажав кнопку “Обзор” выбираем наш файл CheckInternet.vbs
image

   Выбираем “Ежедневно” и нажимаем кнопку “Далее”

image

Выставляем время начала 00.00 и выполнять задание ежедневно. Жмем “Далее”

image

Отмечаем “Установить дополнительные параметры после нажатия…” и жмем кнопку “Готово”

image

В этом окне переходим на вкладку расписание и жмем кнопку “Дополнительно”

image

Здесь выставляем повторять задание каждые (сколько вам желательно) минут(часов) и выставляем в течении 24 часов. И в завершении жмем “ОК”
Вроде все.

Комментариев нет:

Отправить комментарий