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.


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.