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.