Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > > > >
Восстановить пароль Регистрация
 
nivs
Форумчанин
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
08.02.2012, 23:15     Автоматическое подключение к серверу после разрыва   #1
Собственно, сабж. Пока ползал по форуму, пофиксил некоторые недочёты, но проблема осталась нершённой.
Код Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
:: запуск клиента
start vlc.exe http://192.168.1.14:8000/All
 
:: начало костыля
set /a flag = 0
 
:reload
ping 192.168.1.14
 
:: если пинга нет, то закрытие всех клиентов и начало отсчёта заново
if errorlelel 1 (taskkill /F /IM vlc.exe & set /a flag = 0)
 
:: для того, чтобы лишние клиенты не запускались
set /a flag = flag + 1
 
:: чтобы дальше не лезло, если 1 раз пингануло
if %flag% == 1 (goto reload)
 
:: если пингануло дважды, то выражение, что выше в скобках, уже выполняться не будет
:: и по идее flag >= 2
:: А flag == 2 лишь один раз, ближайший поле восстановления соединения с сервером
:: (пока связь не восстановлена flag == 0 или flag == 1
if %flag% == 2 (start vlc.exe http://192.168.1.14:8000/All)
 
:: чтобы буфер не переполнялся
if %flag% == 10 (set /a flag = 3)
 
goto reload
Ну был ещё вариант вместо
ping 192.168.1.14
if errorlelel 1 (taskkill /F /IM vlc.exe & set /a flag = 0)


использовать
ping 78.155.218.207 | find "100%%" && (taskkill /F /IM vlc.exe & set /a flag = 0)

но тоже безрезультатно. Что исправить?
AdAgent
Объявления
08.02.2012, 23:15    Автоматическое подключение к серверу после разрыва
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2012, 23:15    Автоматическое подключение к серверу после разрыва

Посмотрите здесь:

BAT Скрипт для разрыва Интернет-соединения по условию

BAT Подключение сетевого принтера из bat

BAT Отследить подключение флешки

BAT Рабочий метод разрыва конкретного активного соединения из командной строки Windows7

BAT mstsc.exe - автоматическое подключение к удаленному рабочему столу

BAT Автоматическое копирование резервных файлов с нескольких серверов

gimntut
Форумчанин
794 / 163 / 10
Регистрация: 18.07.2011
Сообщений: 234
10.02.2012, 07:44     Автоматическое подключение к серверу после разрыва   #2
Цитата Сообщение от nivs Посмотреть сообщение
но проблема осталась нершённой
Проблема не описана
nivs
Форумчанин
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
10.02.2012, 23:21  [ТС]     Автоматическое подключение к серверу после разрыва   #3
Необходимо заново запускать программу при восстановлении соединения с сервером.
gimntut
Форумчанин
794 / 163 / 10
Регистрация: 18.07.2011
Сообщений: 234
11.02.2012, 07:47     Автоматическое подключение к серверу после разрыва   #4
Убери пробелы с обеих сторон от знака равно.
nivs
Форумчанин
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
11.02.2012, 15:43  [ТС]     Автоматическое подключение к серверу после разрыва   #5
Та же фигня
AdAgent
Объявления
11.02.2012, 15:43    Автоматическое подключение к серверу после разрыва
gimntut
Форумчанин
794 / 163 / 10
Регистрация: 18.07.2011
Сообщений: 234
11.02.2012, 20:08     Автоматическое подключение к серверу после разрыва   #6
Грубых ошибок не видно.
Сделай лог работы программы и выложи его сюда в виде файла. Посмотрим.
nivs
Форумчанин
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
11.02.2012, 22:56  [ТС]     Автоматическое подключение к серверу после разрыва   #7
Я не уверен,что всё верно сделал
Батник - http://pastebin.com/nReDMV76
А это наверно то, что надо вам - http://pastebin.com/8MSSmdQQ
gimntut
Форумчанин
794 / 163 / 10
Регистрация: 18.07.2011
Сообщений: 234
11.02.2012, 23:16     Автоматическое подключение к серверу после разрыва   #8
Цитата Сообщение от nivs Посмотреть сообщение
Я не уверен,что всё верно сделал
Сделано на отлично.

По полученным логам не видно, чтобы связь прерывалась.
Сможешь повторить, но с разрывом и восстановлением интернет-канала?
Код Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@REM Пример самологирующегося батника
@if not '%SelfLogFile%'=='' goto :Execute
set SelfLogFile="%~0.log"
echo. >>%SelfLogFile%
echo ----- %DATE% %TIME% ----- >>%SelfLogFile%
prompt $S$SПапка:$S$P$_$S$SВремя:$S$T$_Команда:$S
call "%~0" %* 1>>%SelfLogFile% 2>>&1
exit
 
:Execute
 
start vlc.exe [url]http://neksia.ru:8000/All[/url]
set flag=0
:RELOAD
ping 78.155.218.207 | find "100%%" && call :KillVLC
set /a flag=flag+1
IF %flag%==1 goto RELOAD
IF %flag%==2 start vlc.exe [url]http://neksia.ru:8000/All[/url]
IF %flag%==10 set flag=3
echo %flag%
goto RELOAD
 
:KillVLC
taskkill /F /IM vlc.exe 
set flag=0
exit /b
nivs
Форумчанин
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
12.02.2012, 04:04  [ТС]     Автоматическое подключение к серверу после разрыва   #9
Чудеса - работает, и так, как мне надо!
http://pastebin.com/9CEtMRM5

Вот готовый батник:
Код Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
set /a flag = 0
сhcp 1251
 
:RELOAD
 
ping 78.155.218.207 | find "100%%" && call :KillVLC
set /a flag = flag + 1
 
IF %flag% == 1  goto RELOAD
IF %flag% == 2  start vlc.exe [url]http://neksia.ru:8000/Сплин[/url]
IF %flag% == 10 set flag=3
 
goto RELOAD
 
 
:KillVLC
 
taskkill /F /IM vlc.exe 
set flag = 0
exit /b
Если есть ошибки в оптимизации - исправте, я проблем, кроме теоретического переполнения flag, не вижу. Или всё хорошо?


Сделал запуск в фоне через *.vbs:
Код Code
1
2
3
4
Dim Shell
Set Shell = CreateObject("WScript.Shell")
Shell.run "radio.bat",0,1
Set Shell = Nothing
Работает так, как мне надо.
Последний вопрос - как вынести IP хоста и путь к потоку в отдельные переменные?
set host = 78.155.218.207 и подстановка %host% в нужное место (замену пути к потоку делал так же) работает некорректно - строки в командной строке перемещаются со страшной скоростью, VLC ничего не проигрывает... Поиграл с синтаксисом и ключами - не помогло.
gimntut
Форумчанин
794 / 163 / 10
Регистрация: 18.07.2011
Сообщений: 234
12.02.2012, 09:47     Автоматическое подключение к серверу после разрыва   #10
Цитата Сообщение от nivs Посмотреть сообщение
Или всё хорошо?
И так сойдёт.
Цитата Сообщение от nivs Посмотреть сообщение
set host = 78.155.218.207 и подстановка %host% в нужное место (замену пути к потоку делал так же) работает некорректно
Показывай, как делал.
Цитата Сообщение от nivs Посмотреть сообщение
строки в командной строке перемещаются со страшной скоростью
Их можно остановить с помощью клавиши Pause.
Цитата Сообщение от nivs Посмотреть сообщение
Поиграл с синтаксисом и ключами - не помогло
Показывай свой синтаксис и лог к нему.

СОВЕТ
Не ставь пробелы вокруг знаков равно в IF и SET. Это одна из причин трудноуловимых ошибок.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2012, 12:09    Автоматическое подключение к серверу после разрыва

Еще ссылки по теме:

BAT Автоматическое определение USB диска и запись содержимых фотографий в указанную папку

BAT Подключение telnet

BAT как переименовать сетевое подключение?

BAT Подключение почтового ящика outlook

nivs
Форумчанин
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
12.02.2012, 12:09  [ТС]     Автоматическое подключение к серверу после разрыва   #11
Всё, отбой, вылечилось. Странно, но с пробелами вокруг "=" и "==" не работает, а без них - работает.
Без пробелов:
скрипт - http://pastebin.com/WPYGiRH9
лог - http://pastebin.com/6QXmDtEJ

С пробелами:
скрипт - http://pastebin.com/DV2mnhmi
лог - http://pastebin.com/8HDDaFSe

В общем, вот рабочий код:
Код Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
chcp 1251
set host=78.155.218.207
set stream=http://neksia.ru:8000/Сплин
set /a flag=0
 
:RELOAD
 
ping %host% | find "100%%" && call :KillVLC
set /a flag=flag+1
 
IF %flag%==1  goto  RELOAD
IF %flag%==2  start vlc.exe %stream%
IF %flag%==10 set   flag=3
 
goto RELOAD
 
 
:KillVLC
 
taskkill /F /IM vlc.exe 
set flag=0
exit /b
Большое спасибо за помощь!
Yandex
Объявления
12.02.2012, 12:09    Автоматическое подключение к серверу после разрыва
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему
Опции темы

Текущее время: 18:25. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.