Показать полную графическую версию : Как сделать что-бы скрипт игнорировал не нужные ответы Ping
Здравствуйте,
Нужно что бы скрипт срабатывал только при положительном отклике от сервера, который пингуется а все остальные игнорировал и пытался по новой соединиться с сервером, который указан в скрипте, как только соединение установлено, скрипт должен срабатывать и писать "Результат положительный - Alive" а если всё таки не удаётся в течении 20 секунд никак соединиться, тогда "Результат отрицательный - Done"
вот скрипт который бы я хотел до работать с вашей помощью
:: Скрипт для проверки интернета.
set WshShell = CreateObject("WScript.Shell")
Return = WshShell.Run("ping 77.88.21.3 -n 1 -w 400", 0, true)
If Return=0 then
WScript.Echo "Результат положительный - Alive"
Else WScript.Echo "Результат отрицательный - Done"
End If
Приветствуется скрипт написанный и на CMD/Bat.
Забыл, если сетевую карту на компьютере выключить, то скрипт который выше, сразу же пишет "Результат отрицательный - Done" - а надо сделать, только если в течении 20 секунд сетевую карту не включили в сеть, тогда уже выводить "Результат отрицательный - Done"
root221, используйте не «ping.exe», а Wbem: Win32_PingStatus class (http://msdn.microsoft.com/en-us/library/windows/desktop/aa394350(v=vs.85).aspx).
Iska, не хотелось бы мне пользоваться дополнительными приложениями.
помогите пожалуйста сделать это на VBS или на CMD
описываю более яснее.
набираю ping 124.0.1.1
Обмен пакетами с 124.0.1.1 по 32 байт:
Превышен интервал ожидания для запроса.
(Это сообщение нужно игнорировать в течении 20 секунд, если появился удачный пинг за эти 20 сек, тогда вывести "Результат положительный - Alive" если не появится тогда "Результат отрицательный - Done")
Отключаем сетевую карту
снова набираю ping 124.0.1.1
Обмен пакетами с 124.0.1.1 по 32 байт:
Заданный узел недоступен.
Заданный узел недоступен.
(Это сообщение нужно игнорировать в течении 20 секунд, если появился удачный пинг за эти 20 сек, тогда вывести "Результат положительный - Alive" если не появится тогда "Результат отрицательный - Done")
А вот это наш положительный результат (если пинг удачный тогда вывести сообщение "Результат положительный - Alive" его как вы уже поняли игнорировать не надо)
снова набираю ping 124.0.1.1
Обмен пакетами с 124.0.1.1 по 32 байт:
Ответ от 124.0.1.1: число байт=32 время<1мс TTL=128
Anonymоus
31-08-2012, 03:03
root221, попробуйте это
@Echo Off
Set IP=77.88.21.3
Set Timeout=20
Set i=0
:Back
If %i% GEQ %Timeout% (Echo Результат отрицательный - Done&Exit /B 1)
Ping -n 1 -w 400 %IP% 2>nul|Find "TTL=">nul&&(
Echo Результат положительный - Alive&Exit /B 0
)||(
Set /A i+=1
Ping -n 2 -w 1000 127.0.0.1>nul
GoTo Back
)
А ещё у вас личка переполнена сообщениями, не отослать ничего.
Всё хорошо, но лучше всё таки переписать не много... Спасибо за ранее.
набираю ping 124.0.1.1
Обмен пакетами с 124.0.1.1 по 32 байт:
Превышен интервал ожидания для запроса.
(Это сообщение нужно игнорировать в течении 20 секунд, если появился удачный пинг за эти 20 сек, тогда вывести "Результат положительный - Alive" если не появится тогда если появится это сообщение тогда сразу выводить "Результат отрицательный - Done")
А ещё у вас личка переполнена сообщениями, не отослать ничего. »
Щас исправим.
Iska, не хотелось бы мне пользоваться дополнительными приложениями. помогите пожалуйста сделать это на VBS или на CMD»
Ощущение такое, что Вы материал по ссылке и не смотрели. Это и есть решение для Windows Script Host, равно как и под любого другого клиента Automation.
Iska, вы можете написать готовое решение из предложенного? просто у меня нет времени разбираться в том материале, когда это можно написать и на CMD...
root221, как Вы думаете, а у кого оно есть — время…
Iska, для тех кто часто занимается скрипто писанием и щёлкает их как орешки, много труда написать не составит, да и времени много не отнимет, т.к человек уже заранее знает, что надо написать в скрипте, что бы он работал так, как просит автор темы.
Ранее я тоже этим занимался в плотную, щас просто позабыл и нету времени восстановить, свои познания в этом деле.
P.S поэтому я обратился на форум за помощью.
root221, как Вы думаете, а у кого оно есть — время… »
Ну некоторые, всё-же находят время, что-бы помогать другим участникам форума.
Попытаюсь вам заново объяснить то что мне нужно, я думаю вы меня просто плохо поняли.
Нужно следующее.
Всё на примерах.
=========================
Например я в консоле ввожу ping 192.168.0.1 (Комп вкл.)
пошли ответы
Ответ от 192.168.0.1: число байт=32 время<1мс TTL=128
тогда нужно что бы скрипт моментально выводил на экран сообщение что интернет есть.
=========================
далее
опять же например я в консоле ввожу ping 192.168.0.1 (Комп выкл.)
пошли ответы
Превышен интервал ожидания для запроса.
тогда нужно что бы скрипт моментально выводил на экран сообщение что интернета нет.
==========================
опять же далее
Например я в консоле ввожу ping 192.168.0.1 (Комп вкл.)
пошли ответы
Заданный узел недоступен.
вот тут ВНИМАТЕЛЬНЕЕ - тогда нужно что бы скрипт выводил на экран сообщение только через 20 сек что Заданный узел недоступен.
p.s выводит он это сообщение если адаптер отключен и мне нужно что-бы он это сообщение игнорировал 20 сек а если по истечению 20 сек адаптер не вкл. тогда выводить это сообщение Заданный узел недоступен. а если за эти 20 сек его включили тогда другие сообщения "моментальные", либо есть интернет, либо нету.
==========================
в общем сделал так
:TestMsgInt
setlocal enabledelayedexpansion
for /f %%t in ('ping 87.250.250.3 -n 2 -w 500') do (
echo."%%t" | find "Ответ">nul && (
echo WScript.Echo "╚эЄхЁэхЄ ЁрсюЄрхЄ." >"%WinDir%\temp\msgint.vbs" && start /B "" "%WinDir%\temp\msgint.vbs"
exit /b 1
)
echo."%%t" | find "Превышен">nul && (
echo WScript.Echo "╚эЄхЁэхЄ эх ЁрсюЄрхЄ." >"%WinDir%\temp\msgint.vbs" && start /B "" "%WinDir%\temp\msgint.vbs"
exit /b 1
)
echo."%%t" | find "Заданный">nul && (
EndLocal
GoTo :TestMsgInt
)
echo."%%t" | find "При">nul && (
EndLocal
GoTo :TestMsgInt
)
)
Теперь возникает вопрос а как сделать что бы проверка была не по find а например по ErrorLevel Ведь если я захочу использовать этот скрипт в анг версии Windows то мне каждый раз придётся менять русское значение которое ищет find на английское.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.