Ich verwende dig
ein Dienstprogramm, um eine öffentliche IP-Adresse zu finden.
Der Befehl, den ich verwendet habe, ist:
dig +short myip.opendns.com @resolver1.opendns.com
aber ich hatte ein Problem, da es auf einigen anderen Computern so lange dauerte, also fügte ich hinzuTimeout nach 5 Sekunden:
dig +short +time=5 +tries=1 myip.opendns.com @resolver1.opendns.com
und auf manchen Computern schlägt es wie erwartet fehl, aber auf anderen Computern wird es nie beendet. Es bleibt einfach hängen ...
Irgendeine Idee, warum das liegt und wie man es beheben kann, damit das Timeout wie erwartet nach 5 Sekunden erfolgt?
BEARBEITEN:
Habe es schon probiert timeout
, aber es hängt immer noch. Ich glaube, es bleibt beim Auflösen des DNS hängen. Ich kann zum Beispiel nicht ping www.google.com
, aber ich kann 172.217.20.4
.
Antwort1
Was die Verwendung von Anwendungs-Timeouts in einigen Dienstprogrammen betrifft, ist bei Verbindungsproblemen nicht immer gewährleistet, dass die Anwendung durch äußere Einflüsse von selbst beendet wird.
Für die problematischen Situationen, in denen es hängen bleibt, würde ich vorsichtshalber nach einiger Zeit ein externes Dienstprogramm verwenden, um es zu beenden.
Wie in:
timeout 5 dig +short +time=5 +tries=1 myip.opendns.com @resolver1.opendns.com
Ausman timeout
NAME nach oben
timeout - run a command with a time limit
ZUSAMMENFASSUNG
timeout [OPTION] DURATION COMMAND [ARG]... timeout [OPTION]
BESCHREIBUNG
Start COMMAND, and kill it if still running after DURATION.