PDA

Показать полную графическую версию : Редирект адреса по доступности?


AlexPebody
16-01-2013, 11:49
Всем приветы! Народ я совсем недавно пишу на vbs прям простенькие скрипты, нужна ваша помощь!

Нужно сделать ярлык на vbs скрипт, который будет делать редирект с одного сайта на другой при недоступности одного из них, а точнее:

Запускаем срипт, открывается сайт, к примеру yandex.ru (нужно будет по IP), если не открываается скажем за 5 секунд, то открыть ngs.ru (опять же по IP).

Народ подскажите плз, очень нужен такой скрипт, т.к. в нативе только vb в винде, а я могу только на php написать такое. Буду ОЧЕНЬ благодарен!

Прошу за вопрос не пинать! Заранее спасибо.

Iska
16-01-2013, 14:29
Что в Вашем понимании значит «открывается сайт»?

AlexPebody
16-01-2013, 16:49
Что в Вашем понимании значит «открывается сайт»? »

Зажал Enter на script.vbs открылся сайт yandex.ru, если yandex.ru не был доступен и не смог открыться, то открылся ngs.ru. Вот такое понимание. )

Iska
16-01-2013, 23:55
Что в Вашем понимании значит «открывается сайт»? »
Зажал Enter на script.vbs открылся сайт yandex.ru, … Вот такое понимание. ) »
Потрясающе. Когда-то ослепленная блеском кыртовых волокон, она спросила у своей няньки:

- Почему он блестит, няня?
- Потому, что это Кырт, Миаканс.
- Почему другие вещи не блестят так, няня?
- Другие - это не Кырт, Миаканс.

Вот и все. Двухтомная монография на эту тему была написана только три года назад. Она внимательно прочла ее. Все сводилось к нянькиному объяснению. Кырт - это кырт, потому что он кырт.

Посредством Wbem класса Win32_PingStatus (http://msdn.microsoft.com/ru-ru/library/windows/desktop/aa394350(v=vs.85).aspx) опрашиваете хост «yandex.ru». При его доступности вызываете URL этого хоста посредством метода «.Run()» объекта «WScript.Shell». При недоступности — то же самое для другого сайта.

AlexPebody
17-01-2013, 05:25
Спасибо. Это уже кое что, но не могли бы вы черкнуть скрипт хотябы пример? Я совсем немного знаю по VBS поэтому к сожалению пока не очень понимаю как сделать скрипт, а конкретных примеров нет в сети, вчера целый день рыл, в основе вылетает по php и apache команды, что я уже сделал... Но нужен скрипт в локали! ОЧЕНЬ!

AlexPebody
17-01-2013, 05:45
Есть вот такой скрипт пинга хоста и вывода лога:

dim fso, soWshShell : set soWshShell = CreateObject("WScript.Shell")

Set fso = CreateObject("Scripting.FileSystemObject")
Const ForAppending = 8
Set tf = fso.OpenTextFile("logping.txt", ForAppending, True)
conCheckInterval = 60000 'интервал опроса в мс
WScript.Quit Main()
function WriteLog()

strMachines ="192.168.0.1;192.168.0.2"
aMachines = split(strMachines, ";")

For Each machine in aMachines
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"_
& machine & "'")
For Each objStatus in objPing

If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then

tf.WriteLine(FormatDateTime(Date(), vbShortDate) & "|" & FormatDateTime(Time(), vbLongTime) & "|" & machine & "|" &"Cвязь с сервером прервана.")

Его я так понимаю можно применить, но как... ппц опять же не соображу т.к. если и пишу то на php а там все другие обороты и синтаксис.

Прошу помощи...???

AlexPebody
17-01-2013, 06:19
ФУХ...................... Ыыы, все сам разрыл!

Option Explicit
Dim objSWbemServicesEx, collSWbemObjectSet, objSWbemObjectEx, strAddress
strAddress = "192.168.0.1"
Set objSWbemServicesEx = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set collSWbemObjectSet = objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strAddress & "'")
For Each objSWbemObjectEx In collSWbemObjectSet
If IsNull(objSWbemObjectEx.StatusCode) Or objSWbemObjectEx.StatusCode <> 0 Then
WScript.CreateObject("Wscript.Shell").Run "http://yandex.ru/", 1, vbTrue
Else
WScript.CreateObject("Wscript.Shell").Run "http://ngs.ru/", 1, vbTrue
End If
Next
Set collSWbemObjectSet = Nothing
Set objSWbemServicesEx = Nothing
WScript.Quit 0




© OSzone.net 2001-2012