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

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

Ответить
Настройки темы
CMD/BAT - [решено] При разрыве связи с определенным IP или HOST проиграть звук

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


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

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


Изменения
Автор: neogara
Дата: 13-06-2010
Помогите создать bat файл который бы следил за определенным соединением (может быть и не одно) и при изменении его статуса или вообще его отсутствия проигрывал звук
Более точнее наверно
У меня задача что при нахождении отличия статуса определенного IP для каждого соединения этого IP и если есть отличия, от заданных, то проиграть звук, а если соединение отсутствует вообще, то опять же проиграть звук
Пробую что-то типа:

Цитата:
title DisconnektSound
set address=нужный IP или HOST
set status=ESTABLISHED
:start
sleep 0
netstat
for /F "tokens=3,4 usebackq" %%i in (`netstat`)do (
set add=%%i
set stat=%%j
)
@echo %add%i%stat%
if %address%==%add% goto start
if not %address%==%add% goto next
goto start
:next
if %status%==%stat% goto start
if not %status%==%stat% goto sound
goto start
:sound
start sound.wav
pause
но не получаеться как надо

Отправлено: 02:08, 12-06-2010

 

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


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

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


Вот нашел что-то похожее, но не могу догадаться как применить в моем батнике

Код: Выделить весь код
wander84:необходимо проверить какой сейчас IP и сравнить его с тем что создался ранее (C:\92.15.67.21). И если:
1) эти IP одинаковы(равны), то ничего не делать.
2) эти IP неодинаковы(неравны), то выполнить bat-файл » 

вариант на базе предыдущего:

@Echo Off

Set $PATH=C:
Set $BATN=C:\Batnik.CMD

For /F "Tokens=1 Skip=1 Delims={,} " %%i In ('WMIC NICCONFIG Where Index^=1 Get IPAddress^|FindStr "."') Do Call :ParseIP %%i
For /F %%i In ('DIR /A:-D/B "%$PATH%\*"^|FindStr /XRC:"[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') Do Set %%i=X

If Not Defined %$IPAddress% Call "%$BATN%"

EXIT

:ParseIP
 Set $IPAddress=%~1
GoTo :EOF

Отправлено: 14:54, 13-06-2010 | #2



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

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


Googler


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

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


neogara, как вариант через NetStat:
Код: Выделить весь код
title Disconnect Sound
set addr=IP Address
set stat=ESTABLISHED

:start
ping -n 2 127.0.0.1 >nul
for /f "delims=" %%i in ('netstat -n^|find /i "%addr%:"') do if /i not "%%i"=="%stat%" call :sound
goto start

:sound
start "" /WAIT sound.wav
goto :eof
по поводу скрытого проигрывания звукового файла гляньте тему:
Разное - [решено] Запуск mp3 файла в режиме скрытого процесса

P.S. на один IP может быть несколько соединений с разным состоянием

Последний раз редактировалось amel27, 13-06-2010 в 16:20. Причина: очепятка

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

Отправлено: 15:09, 13-06-2010 | #3


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


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

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


А в место ping -n 2 127.0.0.1 >nul паузу можно сделать через sleep?
И еще вопрос если соединение отсутствует будет воспроисводить звук
Просто я так поня в команде for /f "tokens=4" %%i in ('netstat -n^ ищится статус, а далее он подставляется к адресу и если нет совпадения то что тогда????

Отправлено: 15:25, 13-06-2010 | #4


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


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

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


Ставлю за ведомо отсутствуещее соединение, а звук так и не проигрывается
и еще я так понял что определяет переменную %%i как статус для find /i "%addr%:" это так?

и еще вопрос что означает значек ^ здесь?

Отправлено: 15:51, 13-06-2010 | #5


Googler


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

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


Цитата neogara:
А в место ping -n 2 127.0.0.1 >nul паузу можно сделать через sleep? »
при наличии утилиты sleep.exe, статья: Пауза в пакетном файле

Цитата neogara:
Ставлю за ведомо отсутствуещее соединение, а звук так и не проигрывается »
отсутствие соединения и изменение статуса существующего соединения - разные задачи:
Код: Выделить весь код
title Disconnect Sound
set addr=IP address
set stat=ESTABLISHED

:start
 ping -n 1 127.0.0.1 >nul
 for /f "delims=" %%i in ('netstat -n^|findstr /IERC:" %addr%:[0-9][0-9 ]*%stat%"') do goto :start
 start "" /WAIT sound.wav
goto start
Цитата neogara:
что означает значек ^ здесь »
экранирует символ "|", чтобы тот отрабатывал только в скобках, а не раньше
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:26, 13-06-2010 | #6


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


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

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


Спасибо за второй и первый пример
но что-то все равно не так, запускаю второй пример, а он мне звук выдает в любом случае
ниже то что дожно было бы получиться

Последний раз редактировалось neogara, 14-06-2010 в 03:00.


Отправлено: 21:58, 13-06-2010 | #7


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


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

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


Цитата:
на один IP может быть несколько соединений с разным состоянием
вот в этом-то проблема и есть

в netstat нужны только в общем внешние адреса
Вот как должно получиться
прошу помочь доработать до конца ПЛЗ (присутствует утилита sleep.exe и cmdow)
Код: Выделить весь код
title Disconnect Sound
set addr=IP address
set stat=ESTABLISHED

:start_1
 sleep 2
если в netstat присутствует IP address тогда идти на start_2 если нет идти на start_1
 
:start_2
Если в netstat присутствуют 2 или более одинаковых IP address, 
тогда нужно проверить stat для каждого из них, то как быть тогда?

:start_3
sleep 2
Проверяем для каждого(!) IP address stat, если stat совпадает, то идти на stat_3, 
если не совпадает то идти на sound

:sound
поигрываем звук в скрытом проигрывателе
cmdow.exe /RUN /hid %systemroot%\system32\mplay32.exe /play /close "sound.wav"
sleep 5
выдать окошко с соощением
echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
echo WSHShell.Popup("Disconnekt %addr%"); >> %temp%\mes.js
start %temp%\mes.js
deltree /y %temp%\mes.js

Последний раз редактировалось neogara, 14-06-2010 в 03:23. Причина: точная формулировка задачи


Отправлено: 22:53, 13-06-2010 | #8


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


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

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


Что-то лазию лазию по форуму, а подходящие более менее примеры найти не могу

Отправлено: 02:00, 14-06-2010 | #9


Googler


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

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


Цитата neogara:
Проверяем для каждого(!) IP address stat, если stat совпадает »
sound при изменении статуса любого из соединений заданного IP:
Код: Выделить весь код
title Disconnect Sound
set addr=IP Address
set stat=ESTABLISHED

:start
 sleep 2
 for /f "delims=" %%i in ('netstat -n^|find "%addr%:"^|find /V "%stat%"') do goto :sound
goto start

:sound
 cmdow.exe /RUN /hid %systemroot%\system32\mplay32.exe /play /close "sound.wav"
 sleep 5
 msg * "Disconnect %addr%!"
goto :eof
P.S. исчезновение соединения из списка NetStat не фиксируется - только смена статуса

Отправлено: 03:45, 14-06-2010 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - восстановление связи при разрыве соединения Костян-Ростов Microsoft Windows 7 14 27-07-2016 12:56
http/web - ограничения доступа к интернет сайтам, или открытие доступа только к определенным сай reddenya Сетевые технологии 5 08-10-2009 10:21
[решено] Ошибки видеокарты EAH 3650 при работе с определенным БП dima3s Непонятные проблемы с Железом 5 18-09-2009 19:30
Разное - [решено] Зависает компьютер при разрыве подключения по локальной сети Cubbie Microsoft Windows 2000/XP 6 28-05-2009 17:32
Как настроить 2003 терминал-сервер, чтобы сессия завершалась при разрыве bzzz75 Microsoft Windows NT/2000/2003 1 16-03-2006 17:47




 
Переход