Войти

Показать полную графическую версию : Помогите дописать скрипт (пингует гугл и если не доступен ребутит модем)


cRYSMAS
18-03-2011, 12:18
Всем привет, помогите дописать скрипт:On Error Resume Next

strComputer = "."
strTarget = "194.54.89.232" 'IP address or hostname
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPings = objWMIService.ExecQuery _
("Select * From Win32_PingStatus where Address = '" & strTarget & "'")
If Err = 0 Then
Err.Clear
For Each objPing in colPings 'избавиться от форича
If Err = 0 Then
Err.Clear
If objPing.StatusCode = 0 Then
' если статус = 0, пустая строка - другое
Else
Set oShell = WScript.CreateObject("WScript.Shell")
oShell.Run "telnet.exe 192.168.1.1"
WScript.Sleep 5000
oShell.SendKeys "login" & chr(13)
WScript.Sleep 2000
oShell.SendKeys "passworld" & chr(13)
WScript.Sleep 1000
oShell.SendKeys "reboot" & chr(13)
End If
Else
Err.Clear
WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."
End If
Next
Else
Err.Clear
WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."
End If
Есть вот такой скрипт он автоматически пингует гугл и если адрес не доступен ребутит модем, подключаеться через телнет, как можно сделать что б после ребута окно тел нета закрывалось?В планировщике скрипт запускается каждые 10 мин, есть еще один недостаток если запущенна ася то почему то пароль вводит в асю а не в окно телнета.
ПС. Пробывал команду logout но после ребута команда не действует потому как идет ребут модема, нужно в вбс закрыть активное окно но не знаю как
СПС

Busla
19-03-2011, 22:29
можно попробовать работать с telnet более прогрессивным методом: http://sourceforge.net/projects/telscript/

cRYSMAS
21-03-2011, 09:51
можно попробовать работать с telnet более прогрессивным методом: http://sourceforge.net/projects/telscript/ »
гм повторюсь я этот скрипт не писал, нашел в инете, у меня нет тех знаний что б дописать его самому что б окна закрывались после ребута модема.
Прогрессивный метод меня как бы мало интересует мне окна нужно закрыть.
В данной сылке инфы нужной не нашел.

Iska
21-03-2011, 18:56
Прогрессивный метод меня как бы мало интересует мне окна нужно закрыть. »
Ну-ну ;)… Как там было: «Вам шашечки или ехать?».

cRYSMAS
23-03-2011, 10:09
гм, блин ну закрыть нужно окно,мне вот нашел но не работает такую строки вставил

Set objShellApp = CreateObject("Shell.Application")
Set objShellWin = objShellApp.Windows
For i=objShellWin.Count-1 To 0 Step -1
objShellWin.Item(i).Quit
не закрывает окна
почему не работает?

Iska
23-03-2011, 11:53
Потому, что окно telnet.exe — это не окно Проводника, и не окно Internet Explorer'а. С чего бы ему закрываться по приведённому коду?

cRYSMAS
23-03-2011, 14:26
я понимаю что это совсем другое окно как закрыть телнет окно? после ребута команда logout не работает
так мб помог с до писание скрипта потому как я не знаю как правильно это сделать

Iska
23-03-2011, 18:18
«так мб» Вы воспользовались бы поиском или хотя бы фильтром (http://forum.oszone.net/forumdisplay.php?f=102&filter_string=telnet&filter_by=title) по сочетанию «telnet». Вы бы тогда увидели, что для реальной работы предлагается использовать (помимо предложенной выше (http://forum.oszone.net/post-1639080.html#post1639080)) ещё как минимум две утилиты, «PLink» и «TSE», и опробовали бы их. У меня, скажем, «PLink» не срабатывал, а «TSE» работал. У кого-то — с точностью до наоборот. Плюс ещё один возможный обходной путь (http://forum.oszone.net/post-1187142.html#post1187142).

Вы не хотите воспользоваться опытом людей, которые проходили этот путь до Вас? Ну, а мне рассказывать в очередной раз, почему:
WScript.Sleep 5000
oShell.SendKeys "login" & chr(13)

не является правильным подходом к решению данной проблемы, тоже не интересно, ибо, как я не раз убеждался — сии объяснения обычно бесполезны.

cRYSMAS
24-03-2011, 09:20
блин спасибо конечно посмотрел 1 (послдняя сылка бита) и зачем мне сылка которая ребутит модем? я скриптом пользуюсь, нормально все работает. Если б я знал хорошо мать часть мне б и объяснять бы не пришлось ладно это все философия=) мне на другом форуме подсказали немного вот код:
Set pExec = CreateObject("WScript.Shell")
Set pExec = pShell.Exec("cmd /k telnet 192.168.1.1")
WScript.Sleep 1000
pExec.SendKeys "login" & Chr(13), 10
WScript.Sleep 1000
pExec.SendKeys "pass" & Chr(13), 10
WScript.Sleep 1000
pExec.SendKeys "reboot" & chr(13)
pExec.Terminate
и должен работать но у меня не работает пишет логин и пароль не являеться командой или командым файлом, при загрузке данного кода я даже не вижу подключение к телнету, если руками вбить строку "cmd /k telnet 192.168.1.1" то открывается соединение, вопрос что может быть не так?почему нет соединения с телнетом?
ПС. Гуглил по поводу закрытия окна/активного окна в вбс скриптах.

libertarij
25-06-2011, 23:34
Такой скрипт запускает окно телнета в свернутом виде, после перезагрузки если попытаться развернуть это окно - оно пропадает.

On Error Resume Next
strComputer = "." strTarget = "google.com" 'IP. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPings = objWMIService.ExecQuery ("Select * From Win32_PingStatus where Address = '" & strTarget & "'")
If Err = 0 Then
Err.Clear
For Each objPing in colPings
If Err = 0 Then
Err.Clear
If objPing.StatusCode = 0 Then
Else
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "telnet.exe 192.168.1.1",2
WScript.Sleep 1000
WshShell.SendKeys "admin{ENTER}" 'admin - login
WScript.Sleep 1000
WshShell.SendKeys "admin{ENTER}" 'admin - password
WScript.Sleep 1000
WshShell.SendKeys "reboot{ENTER}"
WScript.Sleep 3000
WshShell.SendKeys "{ENTER}"
End If
Else
Err.Clear
WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."
End If
Next Else
Err.Clear
WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."
End If




© OSzone.net 2001-2012