Я использую 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.