Войти

Показать полную графическую версию : VBS скрипт автоматической перезагрузки роутера


SystemsX
07-11-2014, 08:22
Всем привет. Стояла задача найти скрипт, который бы запускался по расписанию и проверял доступность сайтов типа яндекс, гугл, в случае отсутствия пинга, запускал бы telnet и перезагружал роутер, был найден вот такой скрипт:

Function PcOnline (strComputer)
'Check if the remote machine is online.
Dim objPing,objStatus
Dim TextStream, TimeVar
Dim fso, tf
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select Replysize from Win32_PingStatus where address = '" & strComputer & "'")
For Each objStatus in objPing
If IsNull(objStatus.ReplySize) Then
PcOnline=False
'Пишем Лог файл
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists("c:\routerlog.txt")) Then
Set tf = fso.OpenTextFile("c:\routerlog.txt",ForAppending, True)
tf.WriteLine(Now() & " " & strComputer & " is down ")
tf.Close()
Set fso = Nothing
Set tf = Nothing
Else
Set tf = fso.CreateTextFile("c:\routerlog.txt",ForAppending, True)
tf.WriteLine(Now() & " " & strComputer & " is down ")
tf.Close()
Set fso = Nothing
Set tf = Nothing
End If
' Конец Лог файла
Else
PcOnline = True
'Wscript.Echo strComputer & " is responding to a ping "
End If
Next
Set objPing=Nothing
Set objStatus=Nothing
End Function
Dim fsot, tft
Const ForReading = 1, ForWriting = 2, ForAppending = 8
If PcOnline("www.ya.ru")_
OR PcOnline("www.google.com")_
Then
' если статус = 0, пустая строка — другое
'WScript.Timeout = 4
'Wscript.Echo "all ok"
Set fsot = CreateObject("Scripting.FileSystemObject")
Set tft = fsot.OpenTextFile("c:\routerlog.txt",ForAppending, True)
tft.WriteLine(Now() & " " & "------norm------")
tft.Close()
Set fsot = Nothing
Set tft= Nothing
WScript.Quit 0
Else
'WScript.Echo "Reboot"
Set oShell = WScript.CreateObject("WScript.Shell")
oShell.Run "telnet.exe 192.168.0.1"
WScript.Sleep 2000
oShell.SendKeys "admin" & chr(13)
WScript.Sleep 2000
oShell.SendKeys "password" & chr(13)
WScript.Sleep 2000
oShell.SendKeys "reboot" & chr(13)
WScript.Sleep 2000
oShell.SendKeys "^({]})q" & chr(13)
WScript.Quit 255
End If
Set fsot = CreateObject("Scripting.FileSystemObject")
Set tft = fsot.OpenTextFile("c:\routerlog.txt",ForAppending, True)
tft.WriteLine("------------------------------------")
tft.Close()
Set fsot = Nothing
Set tft= Nothing


Скрипт работает, если бы не одно очень существенное НО, после запуска клиента telnet, вместо логина администратора роутера(admin), пишет какую то билиберду. Скрин прилагаю, никак не могу понять почему так происходит, такое ощущение что пытается передавать не в той кодировке. Если в ручную конектится к роутеру, без использования скрипта, и вбивать логин пароль руками, все в порядке, все работает. Очень прошу помощи, спасибо.

Iska
07-11-2014, 08:55
Ваш случай: VBS/WSH/JS - Не корректно работает VBS-скрипт (http://forum.oszone.net/showthread.php?t=277396).

См. также фильтр по «telnet» (http://forum.oszone.net/forumdisplay.php?f=102&filter_string=telnet&filter_by=title) или поиск по «telnet» (http://forum.oszone.net/search.php?query=telnet&titleonly=0&showposts=0&forumchoice%5B%5D=101&childforums=1).




© OSzone.net 2001-2012