Вопрос или проблема
Я изучаю утилиту ping
в Windows 10, и когда я пытаюсь выполнить команду в оболочке:
ping -c 3 example.com
Я получаю результат:
Доступ запрещен. Опция -c требует административных прав.
После выполнения от имени администратора я получаю:
Неправильное значение для опции -c.
Справка по командам (ping /?
) говорит о данном аргументе:
[-c compartment]
– Идентификатор маршрутизационного компартмента.
Что это значит? Какие значения может принимать этот аргумент?
Однако -c
не упоминается на сайте Microsoft!
Я также пытался использовать эту команду так: ping -c google.com 8.8.8.8
. Вывод:
Посылаю запросы на 8.8.8.8 с 32 байтами данных:
Ответ от 8.8.8.8: байт=32 время=127мс TTL=58
Ответ от 8.8.8.8: байт=32 время=57мс TTL=58
Ответ от 8.8.8.8: байт=32 время=57мс TTL=58
Ответ от 8.8.8.8: байт=32 время=57мс TTL=58
Статистика ping для 8.8.8.8:
Пакеты: Отправлено = 4, Получено = 4, Потеряно = 0 (0% потерь),
Приблизительное время в пути в миллисекундах:
Минимум = 57мс, Максимум = 127мс, Среднее = 74мс
Ошибки не было, но результат такой же, как у команды ping 8.8.8.8
Итак, как я правильно использую ping -c
в Windows?
Похоже, что вы используете параметр -c
для обозначения количества ping-запросов. В Windows параметр выглядит следующим образом (по умолчанию 3
):
-n count Количество эхо-запросов для отправки.
Вы можете увидеть все параметры, выполнив команду ping /?
.
Что касается вопроса о компартментах:
Компартменты — это просто реликты ранних планов поддержки маршрутизационных компартментов в Windows Vista. Маршрутизационные компартменты не были повторно введены в более поздних версиях Windows.
Некоторые команды Windows все еще поддерживают параметры для компартментов, относящиеся к этой частичной реализации, которая так и не была завершена, такие как -c
для ping
, но они либо выдают ошибки, либо предоставляют бесполезную информацию:
Ipconfig /allcompartments
Netsh interface ipv4 show compartments
Netsh interface ipv4 set compartment…
Добавлю еще несколько комментариев. В Windows:
C:\Windows\System32> .\PING.EXE | C:\Windows\System32\findstr.exe /c:"-n" /c:"-c"
Использование: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
[-w timeout] [-R] [-S srcaddr] [-c compartment] [-p]
-n count Количество эхо-запросов для отправки.
-c compartment Идентификатор маршрутизационного компартмента.
Следовательно, используйте опцию -n
для указания количества эхо-запросов. -c
относится к идентификатору маршрутизационного компартмента, а не к количеству в Windows. Идентификатор компартмента относится к маршрутизации сети (использование маршрутизатора в интернет-пути для каждой узловой системы). В операционных системах на основе Linux используйте опцию -c
.
Ответ или решение
Команда ping
– это мощный инструмент, который используется для диагностики сетевых соединений. В операционной системе Windows, при использовании команды, часто встречаются путаницы, связанные с параметрами, которые могут отличаться от команд, используемых в других операционных системах, таких как Linux.
Проблема с использованием ping -c
в Windows
Вы пытались использовать команду ping -c 3 example.com
, и получили сообщение об ошибке: Bad value for option -c
. Давайте разберемся, почему это происходит и как правильно использовать команду в Windows.
Аргументы командной строки
В Windows команды и их параметры могут отличаться от параметров в Linux. В частности, в Windows для указания количества эхо-запросов, которые нужно отправить, используется параметр -n
, а не -c
. Следовательно, правильная команда звучит как:
ping -n 3 example.com
Разбор сообщения об ошибке
-
Access Denied: Первоначальное сообщение указывает, что для использования параметра
-c
требуются права администратора. Однако это сообщение также может быть связано с неправильным контекстом использования параметра — в данном случае это не стандартный параметр дляping
в Windows. -
Bad value for option -c: Это сообщение возникает потому, что параметр
-c
ожидает идентификатор маршрутизационного компартмента, который в Windows не реализован так, как в некоторых других операционных системах. Таким образом, командная строка не распознает-c
как корректный аргумент.
Параметр -c
и его значение
Параметр -c
используется в Windows для обозначения "идентификатора маршрутизационного компартмента". Это осталось от устаревшей функциональности, которая была задумана в Windows Vista, но не была завершена. В результате данный параметр не актуален и может не давать ожидаемого эффекта.
Для получения списка всех доступных параметров вы можете ввести команду:
ping /?
Заключение и рекомендации
Для отправки заданного количества эхо-запросов в Windows используйте параметр -n
вместо -c
. Например, команда для отправки трех пингов будет выглядеть так:
ping -n 3 example.com
Если у вас возникают дополнительные проблемы с использованием ping
, всегда полезно обратиться к справке по команде (ping /?
) или к официальной документации от Microsoft.
Соблюдая эти рекомендации, вы сможете эффективно использовать утилиту ping
в Windows и избежать распространенных ошибок.