![]() |
Проверка состояния сети.
Доброго времени суток уважаемые.
Возможно это баян, но что то ничего не нашел. Вернее все отрывисто. Необходимо сделать батник который бы анализировал состояние сети по 5 контрольным точкам потом бы выдавал проблемное место. Батник для запуска пользователем, когда он позвонит в ТП. У нас множество удаленных точек и уже порядком поднадоело "подрываться" из за глупых ошибок пользователя. Наваял сейчас простенький батни. Пингует точки, если пинг не проходит - пишет недоступность. А мне в идеале вывести в конце теста мессадж бокс с примерным содержанием содержанием: 1. Сервер 1 - Доступен 2. Сервер 2 - Доступен 3. Сервер 3 - НЕ доступен 4. Сервер 4 - НЕ доступен 5. Сервер 5 - Доступен От этого можем отталкиваться уже и анализировать проблему. Вот батник который сейчас наваял :) @echo oFF ping 192.168.140.1 | find "TTL=" > nul if errorlevel 1 ( msg * "SERVER IBMD NE DOSTUPEN" ) else ( echo "IBMD NE DOSTUPEN" ) ping 192.168.1.1 | find "TTL=" > nul if errorlevel 1 ( msg * "MODEM NE DOSTUPEN" ) else ( echo "MODEM DOSTUPEN" ) ping 77.94.124.70 | find "TTL=" > nul if errorlevel 1 ( msg * "PDC FILIALA NE DOSTUPEN" ) else ( echo "PDC FILIALA DOSTUPEN" exit /b ) как то так. Поделитесь соображениями пожалуйста кому не лень... PS Другие темы читал, немного не то. Стороннее ПО не получится - стандарты компании не разрешают ставить. Да и точек очень много. Нужно просто батник который пользователь нажмет по просьбе СТП и прочитает сообщение выданное ей. |
Dreamer_UFA, добавление новых серверов очень простое, посмотрите, как это сделано в примере. Вашим пользователям останется только нажать Ctrl+C на появившемся месседжбоксе и отправить результат вашей техподдержке.
Код:
@Echo Off |
Цитата:
Во-первых, ping прекрасно сам устанавливает errorlevel и не нужно дополнительно анализировать вывод, как это требуется например для nslookup, которая этот errorlevel не устанавливает. Команда Ping -n 2 %%B|Find "TTL=">nul&&Set Result=Online полностью эквивалентна Ping -n 2 %%B &&Set Result=Online Во-вторых, цель пинга определить возможные проблемы и лучше искать хотя бы одну потерю, а не хотя бы один успех. И вот уже для этой цели, поскольку при хотя бы одном успехе errorlevel будет ноль, надо писать ping -n 10 %%B | find "(0%" что будет означать 100% успех |
Цитата:
![]() |
Anonymоus : Большое спасибо. Ваш пример с небольшой доработкой то что надо. На первых порах будем испоользовать это.
А вообще сейчас пишу небольшую утилитку на дельфи которая постоянно мониторит соединения. В случае обрыва - выводит пользователю сообщение. В любое время можно навести курсор мыши на ярлык в трее - будет отчет по всем соединениям. Планы такие пока. "|FIND TTL=" честно списал. Мне показалось достаточным того что при первых откликах на пинг система считала связь нормальной. |
Цитата:
|
Iska, согласно technet:
Цитата:
|
Anonymоus, так, а
|
Вот этого я не скажу, подозреваю, что пакет вернул маршрутизатор, а не указанный узел 192.168.70.1. Но то, что туда от меня пакеты не приходили - это факт.
|
А что в ICMP-пакете содержится?
|
Iska,
Код:
Протокол : ICMP |
Цитата:
find "TTL" действительно самый дешевый способ. Но мне он не нравится тем, что если из 10 пингов 1 пройдет, эта команда нам скажет, что всё в порядке, тогда как цель такого мониторинга выявить проблемы. Набросал вот. Алгоритм следующий: мы просим find не просто найти TTL, а подсчитать количество таких строк. Эту цифру мы можем считать и сравнить с той, которую передавали ранее пингу в параметре -n. Если хотя бы один пинг не прошел - операция считается неудачной Код:
@echo off Результаты работы в эксперименте с бидоном 192.168.0.1 - wifi роутер в host зоне, 192.168.1.100 - телефон в guest зоне Цитата:
|
:(, Anonymоus, чувствую себя тем неграмотным волком из анекдота про волка, лошадь и её задние копыта.
А хоть что говорит такой: код (чтобы хоть немного представлять ситуацию, и как себя в ней вести)? |
Цитата:
192.168.1.100 Off Status code: 11010 192.168.1.100 Off Status code: 11003 192.168.1.100 Off Status code: 11010 192.168.1.100 Off Status code: 11003 192.168.1.100 Off Status code: 11010 192.168.1.100 On Response time: 5 ms 192.168.1.100 On Response time: 232 ms 192.168.1.100 On Response time: 186 ms 192.168.1.100 On Response time: 212 ms 192.168.1.100 On Response time: 12 ms 192.168.1.100 On Response time: 218 ms зы. начало цикла надо делать до CreateObject, я правильно понял? |
Iska,
Код:
192.168.70.1 Off Status code: 11002 Код:
Set IP=192.168.70.1&Set i=3 Отредактировал второй пост, поправил скрипт, чтобы он учитывал частично прошедший пинг и добавлял статус "Unstable connection" в таком случае. |
CyberMuesli, можно так:
вынеся собственно подключение к Wbem за рамки цикла. Anonymоus, спасибо, ясно. Статус именно тот, что Вы приводили выше на скриншоте: Цитата:
Одно только замечание по коду со скриншота… |
Anonymоus, порылся немного. Да, похоже Вы совершенно правы. Вон и Симон рекомендует пользовать исключительно фильтр на TTL (а для полной ясности и вовсе проверять реальную доступность конечного адреса ажник в четыре шага, начиная с localhost и последовательно углубляясь по маршруту): Ping.
Ещё раз спасибо. Будем знать. |
|
Уважемые, возник такой вопрос.
Как можно добавить в скрипт предложенный Anonymous использование переменных. Так как филиалы разные то и ип адреса тоже. Хотелось бы что бы в тело не лезли.... а прописали где нибудь типа settings.ini. Ну а сам батник конвертнуть в com или exe.... не силен в скриптовых языках... мозг сломал уже :( |
Dreamer_UFA, сам скрипт:
Код:
@Echo Off Содержимое файла настроек Settings.ini: Код:
# Адреса серверов в формате IP:Отображаемое имя |
Спасибо добрый человек.
буду курить маны по скриптовым языкам.... :) |
Уважаемые гуру а не кинете ссылками на ресурсы по скриптовым языкам ? Что бы рассмотреть команды тут примененные да и вообще для самообразования.
Спрашивать тут уже не удобно, сам думаю как сделать. Может и подскажете.... :) Хочу теперь результаты пинга вывести в файл в виде "0" и "1", потом на основании этого вывести подсказку что делать. Вывод я сделал, пингуется точка - выводим во временный файл результат. Потом после получения всех результатов объдиняю все это в result.txt. Получается файл с содержимым: 1 1 1 0 0 1 0 Вот и хочу автоматизировать. Типа программа считывает 0 - определяет недоступность адсл модема - выводит рекомендацию перегрузить модем, проверить коннект проводов и т.д...... Может глупо и не стоит городить на бат`е |
Dreamer_UFA, а прикреплённую тему читали? Там практически всё, что нужно начинающему скриптописателю, остальное без проблем ищется в гугле.
Цитата:
|
Спасибо за подсказку. Прикрепленную тему не заметил... сорри.
Тему наверное можно закрыть как решенную. Основной ответ я получил на заданный вопрос. Дальше буду думать сам. |
Цитата:
|
Iska, насчет временных файлов - скорее, мое личное мнение. Если можно без них обойтись, даже ценой небольшого усложнения скрипта - стараюсь не создавать. Если тут уместна такая аналогия, то это - как верстка таблицами в html. Кроме того, как раз с
Цитата:
|
Ну, дык, что ж делать :) — бывает, пользователи и зависшие приложения снимают.
|
Цитата:
Цитата:
|
CyberMuesli, Вы процитировали не меня.
|
Цитата:
|
Время: 17:55. |
Время: 17:55.
© OSzone.net 2001-