Почему утилита dig зависает на неопределенный срок, даже если указано время ожидания?

Почему утилита dig зависает на неопределенный срок, даже если указано время ожидания?

Я использую digутилиту для поиска публичного IP-адреса.

Я использовал следующую команду:

dig +short myip.opendns.com @resolver1.opendns.com

но у меня возникла проблема, так как на некоторых других компьютерах это занимало слишком много времени, поэтому я добавилтайм-аут через 5 секунд:

dig +short +time=5 +tries=1 myip.opendns.com @resolver1.opendns.com

и на некоторых компьютерах он падает, как и ожидалось, но на некоторых других компьютерах он никогда не завершается. Все, что он делает, это зависает...

Есть идеи, почему и как это можно исправить, чтобы тайм-аут срабатывал через 5 секунд, как и ожидалось?

РЕДАКТИРОВАТЬ:

Уже пробовал timeout, но все равно зависает. Думаю, зависает при разрешении DNS. Например, я не могу ping www.google.com, но могу 172.217.20.4.

решение1

Что касается использования аппликационных тайм-аутов в некоторых утилитах, то при возникновении проблем с подключением не всегда есть гарантия, что приложение остановится само по себе с помощью внешнего «принуждения».

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

Как в:

timeout 5 dig +short +time=5 +tries=1 myip.opendns.com @resolver1.opendns.com

Отman timeout

ИМЯ топ

   timeout - run a command with a time limit

СИНТАКСИС топ

   timeout [OPTION] DURATION COMMAND [ARG]...
   timeout [OPTION]

ОПИСАНИЕ вверху

   Start COMMAND, and kill it if still running after DURATION.

Связанный контент