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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка компьютера на ответ пинга

Ответить
Настройки темы
CMD/BAT - [решено] Проверка компьютера на ответ пинга

Пользователь


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

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


Здравствуйте.
Прошу помощи в доработке скрипта.
Задача: выполнить действия по списку компьютеров, предварительно проверив, что компьютер в доступен (проверяю доступность пингом)

Код: Выделить весь код
for /f %%i in (pc1.txt) do (
	Ping -n 1 -w 1000 %%i |Find "TTL=">nul
	If %ErrorLevel%==0 (
		Echo Online
	) Else (
		Echo Offline
	)
)
в файл pc1.txt внес 2 IP один пингуется, а второй нет, но для для обоих компьютеров выходит Online.

Отправлено: 17:17, 14-03-2016

 

Ветеран


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

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


densan, либо выносите за скобки, либо прописывайте setlocal enabledelayedexpansion, либо пользуйтесь булевыми операторами.
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion

for /f %%i in (pc1.txt) do (
	Ping -n 1 -w 1000 %%i |Find "TTL=">nul
	If !ErrorLevel!==0 (
		Echo Online
	) Else (
		Echo Offline
	)
)
Код: Выделить весь код
@echo off

for /f %%i in (pc1.txt) do call:ping "%%i"
goto:eof

:ping

Ping -n 1 -w 1000 %%i |Find "TTL=">nul

If %ErrorLevel%==0 (
	Echo Online
) Else (
	Echo Offline
)
Код: Выделить весь код
@echo off

for /f %%i in (pc1.txt) do (

    Ping -n 1 -w 1000 %%i |Find "TTL=">nul && Echo Online || Echo Offline

)
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:38, 14-03-2016 | #2



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

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


Пользователь


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

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


Foreigner, большое вам спасибо за подробный ответ.

Отправлено: 09:11, 15-03-2016 | #3


Ветеран


Contributor


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

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


Foreigner, А зачем нужен Find, почему бы не ограничиться одним ping?
Код: Выделить весь код
@Echo Off
for /f %%i in (pc1.txt) do Ping -n 1 -w 1000 %%i >nul 2>nul && Call :Something %%i || Echo Offline %%i
GoTo :Eof

:Something
Echo Online  %1   Делаю некое действие

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 15-03-2016 в 21:41.


Отправлено: 21:28, 15-03-2016 | #4


Ветеран


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

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


megaloman, Тоже так раньше думал, пока не получил не тот результат, который ожидался:
Код: Выделить весь код
  > ping 198.0.0.1 -n 1 && echo True || echo False

Обмен пакетами с 198.0.0.1 по с 32 байтами данных:
Превышен интервал ожидания для запроса.

Статистика Ping для 198.0.0.1:
    Пакетов: отправлено = 1, получено = 0, потеряно = 1
    (100% потерь)
False
  > 1>nul ping 198.0.0.1 -n 1 && echo True || echo False
True

  > 1>nul ping 198.0.0.1 -n 1 && echo True || echo False
True

  > ping 198.0.0.1 -n 1 && echo True || echo False

Обмен пакетами с 198.0.0.1 по с 32 байтами данных:
Превышен интервал ожидания для запроса.

Статистика Ping для 198.0.0.1:
    Пакетов: отправлено = 1, получено = 0, потеряно = 1
    (100% потерь)
False
Очень интересное поведение

Отправлено: 22:06, 15-03-2016 | #5


Ветеран


Contributor


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

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


Цитата Foreigner:
Очень интересное поведение »
Самое странное, что при многократном запуске такого батника результаты могут меняться. Похоже, это специфический адрес, ИМХО в сети нет такого компьютера. Он не корректен для локальной сети.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 15-03-2016 в 23:58.


Отправлено: 23:48, 15-03-2016 | #6


Ветеран


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

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


megaloman, Да это я ошибся (c адресом), хотел из домашней роутерной подсети 192.168.0.*, тоже есть расхождения в показаниях, но мы то точно знаем, какие адреса задействованы:

Код: Выделить весь код
@echo off

for /l %%i in (0,1,10) do (
    
    echo 192.168.0.%%i
    1>nul ping 192.168.0.%%i -n 1 && echo 1 || echo 0
     ping 192.168.0.%%i -n 1 | 1>nul findstr "TTL=" && echo 1 || echo 0

)
С поиском TTL без ошибок в отличии от простого пинга.

Отправлено: 00:14, 16-03-2016 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка компьютера на ответ пинга

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Полная проверка компьютера на наличие вирусов/вредоносных программ stalindima@vk Лечение систем от вредоносных программ 27 21-08-2015 19:04
Проверка компьютера на вирусы juli-him Лечение систем от вредоносных программ 5 29-05-2013 23:42
Info - Онлайн проверка всего компьютера и отдельных файлов на вирусы iskander-k Защита компьютерных систем 6 27-01-2013 22:30
Switch/802.3 - Нет пинга на роутер только у одного компьютера в лок сети rebe Сетевое оборудование 3 01-11-2012 20:35
CMD/BAT - [решено] проверка пинга если ошибка переподключение к WIFI fomincev@vk Скриптовые языки администрирования Windows 1 12-08-2012 15:16




 
Переход