Como obter apenas o endereço IP do nmblookup para uso no script Bash?

Como obter apenas o endereço IP do nmblookup para uso no script Bash?

Se eu fizer:

nmblookup myServerName

Eu recebo:

192.168.6.106 myservername<00>

Como quero usar o IP retornado nmblookup myServerNameem um script Bash, gostaria de saber a melhor maneira de retornar apenas o IP, não a myservername<00>parte da string. eu olheia documentação do nmblookup, mas não consigo encontrar uma opção que me ajude.

Responder1

Você pode querer adicionar algumas verificações mais rigorosas, incluindo verificação de integridade, pois o nmblookup pode falhar, se myServerName estiver inativo:

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

informação relacionada