Wie kann ich überprüfen, ob mein Host-Befehl im Skript eine gültige IP hat

Wie kann ich überprüfen, ob mein Host-Befehl im Skript eine gültige IP hat

Angenommen, wir haben nur 1 Parameter

host $1

Wie kann ich überprüfen, ob der obige Befehl mir eine Antwort gibt oder:

Host $1 not found (NXDOMAIN) 

und anstatt einen Fehler nicht gefunden anzuzeigen, möchte ich nur einen-

Antwort1

hostwird bei Nichtauflösen Ihrer Eingabe mit 1 beendet, sodass Sie eine if-Konstruktion verwenden können:

if ! host "$1" | grep -v 'not found'; then
  printf '%s\n' '-'
fi

Wir verwenden, !um zu testen, ob der Befehl fehlschlägt (da ich davon ausgehe, dass Sie die Ausgabe wie gewohnt drucken möchten, wenn er erfolgreich ist). hostsendet den not foundFehler an stdout statt an stderr, sodass wir stdout nicht einfach verbergen können. Aus diesem Grund leite ich den Host-Befehl an grep -v 'not found'dies weiter. Dadurch wird der Fehler „nicht gefunden“ ausgeblendet, falls er vorhanden ist, und es wird trotzdem 1 beendet, wodurch die if-Konstruktion druckt -. Wenn es nicht gefunden wird, not foundwird 0 beendet.

Antwort2

Wäre der Exit-Status ausreichend? Sie können den $?Exit-Status des letzten Befehls einbinden, auch wenn Sie die Ausgabe unterdrückt haben. Für hostden Exit-Status ist 0 Erfolg und 1 Fehler

[17:54] [ws ~] $ host 127.0.0.112 1>&2 >/dev/null
[17:54] [ws ~] $ echo $?
1
[17:54] [ws ~] $ host 127.0.0.1 1>&2 >/dev/null
[17:54] [ws ~] $ echo $?
0

verwandte Informationen