Всем привет
У меня вот такой вариант проверки пинга получился...
Я использовал bat-файл запущенный через утилиту NirCmd (для скрытия окна cmd). Утилиту NirCmd можно скачать тут -
http://www.nirsoft.net/utils/nircmd.html (лицензия freeware). Есть 32-bit и 64-bit версии. При запуске файла "nircmd.exe" утилита предлагает скопировать себя в папку Windows. Если нажать кнопку "Copy To Windows Directory", то она копируется и обращаться к ней после этого можно по имени файла nircmd.exe, не прописывая полный путь. Занимает сама утилита 116 КБ, есть английский хелп. NirCmd умеет запускать процессы без видимых окон, на такие программы обычно ругаются антивирусы.
Создаем bat-файл с именем "Test_Ping.bat" ...
ping crapware.aidf.org -n 1 | findstr "TTL" > ping.log
Пример cms-скрипта...
// Запускаем ярлыком bat-файл, посредством утилиты "NirCmd" (http://www.nirsoft.net/utils/nircmd.html)
EXECUTE("nircmd.exe", "execmd Test_Ping.bat.lnk")
// Ждем, пока создается файл "ping.log", и пока он не освободится для чтения (иначе будет ошибка)
WAITMS(1500) // Задержка подбирается индивидуально
$str = TFREAD("ping.log", 1) // Считываем из файла нужную нам строку
// файл "ping.log" будет создан утилитой "cmd.exe" в кодировке DOS.
// Строка получится вида: ЋвўҐв ®в 81.177.6.193: зЁб«® Ў ©в=32 ўаҐ¬п=13¬б TTL=53
// Нужная нам цифра находится после 44-го символа и перед кракозяброй "¬б"
$ping = STRCUT2($str, 44, (STRPOS($str, "¬б") - 1)) // Вырезаем нужную нам цифру
LOGWRITE ($ping)
Далее, нужно создать ярлык на наш bat-файл (NirCmd будет запускать именно ярлык, а не сам батник). Имя ярлыка, в данном примере, такое же как и у bat-файла. Теперь у нас в папке проекта находятся: сам cms-скрипт, bat_файл и ярлык bat-файла.
Вместо записи результатов команды пинг в файл можем использовать запись в буфер обмена.
Тогда bat-файл будет таким.
ping crapware.aidf.org -n 1 | findstr "TTL" | clip
И немного изменим скрипт.
// Запускаем ярлыком bat-файл, посредством утилиты "NirCmd" (http://www.nirsoft.net/utils/nircmd.html)
EXECUTE("nircmd.exe", "execmd Test_Ping.bat.lnk")
WAITMS(1000)
$str = FROMCLIP()
$ping = STRCUT2($str, 44, (STRPOS($str, "мс") - 1))
LOGWRITE ($ping)
При работе скрипта окно Комндной строки не выскакивает. Курсор правда немного подмигивает.