¿Cómo obtener solo la dirección IP de nmblookup para usarla en el script Bash?

¿Cómo obtener solo la dirección IP de nmblookup para usarla en el script Bash?

Si lo hago:

nmblookup myServerName

Yo obtengo:

192.168.6.106 myservername<00>

Como quiero utilizar la IP devuelta nmblookup myServerNameen un script Bash, me gustaría saber cuál es la mejor manera de devolver solo la IP, no la myservername<00>parte de la cadena. he miradola documentación de nmblookup, pero no encuentro una opción que me ayude.

Respuesta1

Es posible que desees agregar algunas comprobaciones más estrictas, incluida la verificación de idoneidad, ya que nmblookup podría fallar si myServerName está inactivo:

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

información relacionada