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

Компьютерный форум 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 | Цитировать


Пробую одновременно первый и третий примеры, но все равно при изменении статуса соединения звука не происходит(((

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


Отправлено: 12:18, 14-06-2010 | #11



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

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


Googler


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

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


neogara, двухэтапный вариант:

Код: Выделить весь код
title Disconnect Sound
set addr=IP address
set stat=ESTABLISHED

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

:start2
 set $a=0& set $b=0& sleep 2
 for /f "tokens=4" %%i in ('netstat -n^|find "%addr%:"') do if "%%i"=="%stat%" (
 set /a $a+=1) else set /a $b+=1
if %$b% equ 0 if %$a% gtr 0 goto :start2

:sound
 cmdow.exe /RUN /hid %systemroot%\system32\mplay32.exe /play /close "sound.wav"
 sleep 5
 msg * "Disconnect %addr%!"
goto :start1
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:12, 14-06-2010 | #12


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


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

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


Сейчас некогда проверить, позже отпишусь

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


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


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

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


В этой формуле
Цитата:
:start1
sleep 2
for /f "delims=" %%i in ('netstat -n^|find "%addr%:"') do goto :start2
goto start1
Если ставлю IP addres существующий идет на start1, если не существующий опять идет на start1

А дальше не проходит вообще ни как(

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

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


Googler


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

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


Цитата neogara:
Что ж такое-то третью неделю не могу решить(
Вроде все просто »
сложно точно воспроизвести условия для проверки, так что у вас один выход - разобраться как работает скрипт, отследить историю соединения (TCPView) и найти причину того или иного его поведения... кстати, для отладки вместо NetStat можно использовать его текстовые логи:
Код: Выделить весь код
netstat 1 >netstat.log

Отправлено: 16:50, 15-06-2010 | #15


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


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

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


Я пробЫвал через логи и TCPView, вобщем-то я с них и начал, и вроде бы если в лог отправить одну строчку, то кое как работает, просто не успевает, скорее всего, при разрыве связи ввести в лог и вывести из него, связь рвется быстро и это соединение просто пропадает
но вот не задача оказалась, с определением 2-х соединений, если вводит в лог 2-ве строки, то читает последнию и придумать, как читать их поочереди головы не хватает, и тем более что с 2-мя и более строками замедляется их обработка (в теории), поэтому выше описанные варианты считаю важными. ЗА НИХ СПАСИБО ОГРОМНОЕ. покручу поверчу авось получится
Я еще сокращал колличество столбцов для поиска, но проблемка все же возникает в команде "ЕСЛИ", что тут не ладится)))

И еще вопрос:
Как вывести в переменную из файла именно только первую строку, а потом только вторую? Что - то на форуме не нашел

Отправлено: 03:49, 16-06-2010 | #16


Googler


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

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


Цитата neogara:
просто не успевает, скорее всего, при разрыве связи ввести в лог и вывести из него »
имхо проще экспериментировать с tcpvcon, т.к. она по умолчанию выводит только ESTABLISHED-соединения и нет нужды фильтровать другие состояния через IF... да и привязка к процессу не будет лишней:
Код: Выделить весь код
@echo off
set proc=process.exe
set addr=XXX.XXX.XXX.XXX

:start1
 sleep 1
 for /f %%i in ('2^>nul tcpvcon -n -c %proc%^|find "%addr%:"') do goto start2
 echo.цикл: ожидание открытия соединения с %addr%
goto start1

:start2
 sleep 1
 echo.цикл: ожидание закрытия всех соединений с %addr%
 for /f %%i in ('2^>nul tcpvcon -n -c %proc%^| find "%addr%:"') do goto start2

echo.все соединения закрыты с %addr% - вывод сообщения
cmdow.exe /RUN /hid %systemroot%\system32\mplay32.exe /play /close "sound.wav"
sleep 5
msg * "Disconnect %addr%!"

echo.возврат на начало
goto :start1
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:58, 16-06-2010 | #17


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


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

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


Во! Вот это выход из положения. Я уезжаю на 3 дня, поэтому нет возможности сечас протестить, как вернусь отпишу обязательно

А я и не знал, что только ESTABLISHED, спасибо еще раз

Отправлено: 14:36, 16-06-2010 | #18


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


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

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


Я думаю, что на этом пока все!
Если возникнут вопросы - отпишу ОГРОМНОЕ СПАСИБО!!!)))

Отправлено: 01:29, 20-06-2010 | #19



Компьютерный форум 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




 
Переход