barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)
Показаны сообщения с ярлыком ping. Показать все сообщения
Показаны сообщения с ярлыком ping. Показать все сообщения

вторник, 14 февраля 2017 г.

Ожидание заданного в миллисекундах интервала в bat-файле

Вариантов реализации ожидания заданного в миллисекундах интервала в bat-файле много, один из них:
ping -n 1 -w <интервал в мс> 10.10.254.254 >nul
Здесь важно, что 10.10.254.254 - гарантированно несуществующий ip.
А если нужно ждать рандомное число мс в заданном диапазоне:
set /a randms=500+1000*%random%/32768
ping -n 1 -w %randms% 10.10.254.254 >nul 
Здесь делается рандомная задержка от 500 до 1000 мс.

суббота, 20 апреля 2013 г.

bat: задержки в скриптах

Для реализации задержки в bat-скрипте на определенное количество секунд можно воспользоваться командой timout. Например, так реализуется пауза в 20 секунд:
timeout /T 20 /NOBREAK
Проблема в том, что в некоторых средах (например, на билд-сервере Teamcity) попытка выполнить эту команду завершается ошибкой:
ERROR: Input redirection is not supported, exiting the process immediately.
Выход - заменить timeout на ping:
ping -n 20 127.0.0.1 > NUL
Эффект будет практически тот же (все же пинги будут выполняться не точно раз в секунду), а ошибка уйдет. 

воскресенье, 10 июня 2012 г.

OpenVPN: пинг с сервера (Ubuntu) на клиента (Win7)

Поднял тут OpenVPN (tun) сервер на амазоновском EC2-инстансе (Ubuntu 12.04), и столкнулся с проблемой, что с клиента (Win7) пинг на сервер идет, а вот с сервера на клиента - нет. Оказалось, проблема с брандмауэром (что неудивительно), который режет пинги (и вообще видимо все входящие соединения) на интерфейсе OpenVPN, т.к. эта сеть по-умолчанию стала "Общественной":


Вот только изменить тип этого соединения никак - надпись "Общественная сеть" для этого подключения не является ссылкой. Дело видимо в том, что для подключения не настроен шлюз по-умолчанию (т.к. шлюз по-умолчанию есть в подключении к инету, а в vpn-сеть я хожу с помощью статических маршрутов). Чтобы не трогать настройки подключения, проще либо отключить брандмауэр (что, конечно, не лучший вариант), либо разрешить все входящие соединения с OpenVPN-овской подсети. Делается это созданием "настраиваемого" правила входящих соединений брандмауэра, разрешающего подключения по всем протоколами и портам с подсети OpenVPN на локальные компьютер.

пятница, 15 июля 2011 г.

ping в php

Если в php не запрещен exec, то выполнить ping можно следующим образом:

exec("ping -c 1 -w 200 $db_host",$output, $status); // для Windows: -n вместо -c
if ($status==0)
     echo "Online";
else
     echo "Offline";