Wie erhalte ich nur die IP-Adresse von nmblookup zur Verwendung in Bash-Skripten?

1

Wenn ich mache:

nmblookup myServerName

Ich bekomme:

192.168.6.106 myservername<00>

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

jonathanbell
quelle
Um genauer zu sein:nmblookup server | awk '/^[0-9]+/ {print $1}'
Alex

Antworten:

2

Möglicherweise möchten Sie einige strengere Überprüfungen hinzufügen, einschließlich der Überprüfung der Integrität, da nmblookup möglicherweise fehlschlägt, wenn myServerName inaktiv 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
Eugen Rieck
quelle
Ja Dankeschön! Das war meine nächste Herausforderung (da ich noch Bash lerne). Ihre Antwort ist großartig. Jetzt zum nachlesen test! Scheint praktisch und komplex. ss64.com/bash/test.html
jonathanbell