Wie bekomme ich nur die IP-Adresse von nmblookup für die Verwendung in Bash-Skripts?

573
jonathanbell

Wenn ich mache:

nmblookup myServerName 

Ich bekomme:

192.168.6.106 myservername<00> 

Da ich die zurückgegebene IP nmblookup myServerNamein einem Bash-Skript verwenden möchte, möchte ich wissen, wie Sie nur die IP-Adresse zurückgeben, nicht den myservername<00>Teil der Zeichenfolge. Ich habe mir die nmblookup-Dokumentation angesehen, finde aber keine Option, die mir helfen würde.

1
Genauer gesagt: `nmblookup server | awk '/ ^ [0-9] + / ' ` Alex vor 7 Jahren 0

1 Antwort auf die Frage

2
Eugen Rieck

Möglicherweise möchten Sie einige strengere Prüfungen, einschließlich der Überprüfung der Integrität, hinzufügen, da nmblookup möglicherweise fehlschlägt, wenn myServerName nicht verfügbar ist:

RES=$(nmblookup myServerName 2>/dev/null) if test "$?" != "0"; then echo "nmblookup failed" # Do something exit 10 fi  IP1=$(echo "$RES" | sed 's/^\([0-9]*\)\..*/\1/') IP1=$(printf '%d' "$IP1" 2>/dev/null) test -z "$IP1" && IP1=256  IP2=$(echo "$RES" | sed "s/^$IP1\\.\\([0-9]*\\)\\..*/\\1/") IP2=$(printf '%d' "$IP2" 2>/dev/null) test -z "$IP2" && IP2=256  IP3=$(echo "$RES" | sed "s/^$IP1\\.$IP2\\.\\([0-9]*\\)\\..*/\\1/") IP3=$(printf '%d' "$IP3" 2>/dev/null) test -z "$IP3" && IP3=256  IP4=$(echo "$RES" | sed "s/^$IP1\\.$IP2\\.$IP3\\.\\([0-9]*\\).*/\\1/") IP4=$(printf '%d' "$IP4" 2>/dev/null) test -z "$IP4" && IP4=256  OK=1 test $IP1 -gt 255 && OK=0 test $IP2 -gt 255 && OK=0 test $IP3 -gt 255 && OK=0 test $IP4 -gt 255 && OK=0 if test "$OK" != "1"; then echo "nmblookup talking garbage" # Do something exit 11 fi 
Ja Dankeschön! Das war meine nächste Hurtle (da ich immer noch Bash lerne). Ihre Antwort ist großartig. Nun zu `` test```! Scheint praktisch und komplex. http://ss64.com/bash/test.html jonathanbell vor 7 Jahren 0