Se eu fizer:
nmblookup myServerName
Eu recebo:
192.168.6.106 myservername<00>
Como quero usar o IP retornado nmblookup myServerName
em 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