Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Скрипт для проверки пинга

Ответить
Настройки темы
CMD/BAT - Скрипт для проверки пинга

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Нужен скрипт для проверки пинга раз в 10 мунут в 5 запросов, если хоть 1 ответ пришел то это считается нормой и процесс повторяется через 10 минут.
Если ни одного ответа не пришло то на COM порт отправляется команда вида echo 111 >com3 на котором в свою очередь висит реле и которое передергивает питание модема

Заранее благодарю за помощь!

Отправлено: 10:07, 06-12-2011

 

Новый участник


Сообщения: 42
Благодарности: 13

Профиль | Отправить PM | Цитировать


Могу предложить
скрипт на VBS

Код: Выделить весь код
On Error Resume Next 
Call Main
Private Sub Main
Set objShell = WScript.CreateObject("WScript.Shell")
Set objExecObject = objShell.Exec("Cmd /c ping -n 5 www.ya.ru")

Do While Not objExecObject.StdOut.AtEndOfStream
	strText = objExecObject.StdOut.ReadLine()
	If Instr(strText, "(100% ") > 0 Then
		objResult = objShell.Run ("Cmd /c Copy 111>Com3" , 0, True)
	End If
Loop
End Sub

WScript.Sleep 600000	'время = 10мин * 60сек * 1000
Call Main

Отправлено: 12:00, 06-12-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Loran_rus, вроде «echo» просили
Цитата Loran_rus:
Copy 111>Com3 »

Отправлено: 12:26, 06-12-2011 | #3


Новый участник


Сообщения: 42
Благодарности: 13

Профиль | Отправить PM | Цитировать


Iska, А это я как художник, "так вижу"
думаю человек задействовавший реле через ком порт для управления питанием модема в состоянии заменить команду под собственные нужды

Отправлено: 13:12, 06-12-2011 | #4


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Loran_rus, вроде «echo» просили …
Цитата Loran_rus:
Copy 111>Com3 » »
Это особой роли не играет, главное чтоб Com порт открылся и закрылся при этом реле разомкнет цепь питания модема

Цитата Loran_rus:
Могу предложить
скрипт на VBS »
попробовал Ваш скрипт, поставил WScript.Sleep 6000 он запускается 2 раза в подряд отрабатывает и все. и возможно ли чтоб как нибудь отображался процесс его работы??

Отправлено: 13:13, 06-12-2011 | #5


Новый участник


Сообщения: 42
Благодарности: 13

Профиль | Отправить PM | Цитировать


Цитата Hunterus:
попробовал Ваш скрипт, поставил WScript.Sleep 6000 он запускается 2 раза в подряд отрабатывает и все
сильно изменяюсь действительно вставил из буфера еще сырую версию
вот полностью рабочая

Код: Выделить весь код
Set objShell = WScript.CreateObject("WScript.Shell")
Call Main
Private Sub Main
Set objExecObject = objShell.Exec("Cmd /c ping -n 5 www.ya.ru")
Do While Not objExecObject.StdOut.AtEndOfStream
	strText = objExecObject.StdOut.ReadLine()
	If Instr(strText, "(100% ") > 0 Then
		objResult = objShell.Run ("Cmd /c Echo 111 >Com3" , 0, True)
		Call WaitTime
	End If
Loop
End Sub
Call WaitTime
Private Sub WaitTime
WScript.Sleep 600000	'время = 10мин * 60сек * 1000
Call Main
End Sub

Цитата Hunterus:
возможно ли чтоб как нибудь отображался процесс его работы??
Замените objResult = objShell.Run ("Cmd /c Echo 111 >Com3" , 0, True) на запуск приложения или открытие документа, ну или целиком строку.
Если желаете посмотреть работу команды пинг вот тот же скрипт с записью в
текстовый файл

Код: Выделить весь код
Dim fso, f1, ts
Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile ("pingtest.txt")
Set f1 = fso.GetFile("pingtest.txt")
Set ts = f1.OpenAsTextStream(ForWriting, True)

Set objShell = WScript.CreateObject("WScript.Shell")
Call Main
Private Sub Main
Set objExecObject = objShell.Exec("Cmd /c ping -n 5 www.ya.ru")
Do While Not objExecObject.StdOut.AtEndOfStream
	strText = objExecObject.StdOut.ReadLine()
ts.WriteLine strText
	If Instr(strText, "(100% ") > 0 Then
		objResult = objShell.Run ("Cmd /c Cmd /c Echo 111 >Com3" , 0, True)
		Call WaitTime
	End If
Loop
ts.Close
End Sub
Call WaitTime
Private Sub WaitTime
WScript.Sleep 600000	'время = 10мин * 60сек * 1000
Call Main
End Sub

Последний раз редактировалось Loran_rus, 06-12-2011 в 15:45.


Отправлено: 15:39, 06-12-2011 | #6


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


все таки хочется на bat скрипт запустить
сижу вот из этого переделываю:

for /f "tokens=8 delims== " %%i in ('ping -n 1 google.ru ^| findstr /i "TTL"') do set n=%%i
if defined n (goto n1)
echo нет пинга
exit /b
:n1
set /a n=%n:~0,-2%
if %n% gtr 100 start "" notepad.exe




пока ничего не получается

Отправлено: 13:21, 07-12-2011 | #7


Новый участник


Сообщения: 42
Благодарности: 13

Профиль | Отправить PM | Цитировать


А в CMD это будет выглядеть так
Код: Выделить весь код
@Echo Off
Ping -n 5 ya.ru>nul
If %ErrorLevel% GTR 0 Echo 111>Com3
Я не любитель использовать скрипты которые постоянно висят и ждут чтобы раз в ХХ минут выполнить какое то действие, для запуска приложений и процессов по времени или через определенный промежуток есть куча инструментов, собственно говоря вы видели что получается "Индийский код" когда я зацикливаю простую и понятную процедуру с ожиданием и перезапуском.

Так что реализацию запуска через 10 минут оставляю на ваше усмотрение

Код взят от сюда

Отправлено: 14:04, 07-12-2011 | #8


Аватара для Freem

Старожил


Сообщения: 353
Благодарности: 16

Профиль | Отправить PM | Цитировать


Написал простую пинговалку, выводящее сообщение о результатах:
Код: Выделить весь код
@echo off
ping -n 1 %IP%
echo
if %errorlevel%==0 (
echo =================================
echo =======TEXT 1=======
echo =================================
)
if %errorlevel%==1 (
echo =================================
echo ==========TEXT 2==========
echo =================================
)
pause
Но нужно чтобы TEXT 2 выводился, если пинг отвечает также полученными пакетами "заданный узел недоступен". Иначе у меня везде первый текст выходит.

Последний раз редактировалось Freem, 27-12-2011 в 13:10.


Отправлено: 10:31, 27-12-2011 | #9


Пользователь


Сообщения: 148
Благодарности: 39

Профиль | Сайт | Отправить PM | Цитировать


Freem, для этого случая в предыдущем примере как раз использовалась команда
ping -n 1 %IP% | findstr /i "TTL"

-------
Alex Dragokas

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:19, 28-12-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Скрипт для проверки пинга

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Помогите создать батник для проверки пинга и удаленного подключения mankiz Скриптовые языки администрирования Windows 7 12-11-2010 06:52
CMD/BAT - Скрипт для проверки почты spartak-21rus Скриптовые языки администрирования Windows 1 29-03-2010 10:30
Любой язык - [решено] Нужен скрипт cmd,vbs,PowerShell для проверки списка пользователей и их удаление из AD alex_frog Скриптовые языки администрирования Windows 6 22-07-2009 18:41
Скрипт для проверки списка пользователей и их удаление из AD alex_frog Microsoft Windows NT/2000/2003 0 22-07-2009 13:16
Скрипт для проверки пользователя ($) Mike-os Вебмастеру 7 25-11-2005 18:27




 
Переход