shell - Portable way to resolve host name to IP address -
i need resolve host name ip address in shell script. code must work @ least in cygwin, ubuntu , openwrt(busybox). can assumed each host have 1 ip address.
example:
input
google.comoutput
216.58.209.46
edit: nslookup may seem solution, output quite unpredictable , difficult filter. here result command on computer (cygwin):
>nslookup google.com unauthorized answer: serwer: unknown address: fdc9:d7b9:6c62::1 name: google.com addresses: 2a00:1450:401b:800::200e 216.58.209.78
if want available out-of-the-box on modern unix, use python:
pylookup() { python -c 'import socket, sys; print socket.gethostbyname(sys.argv[1])' "$@" 2>/dev/null } address=$(pylookup google.com) with respect special-purpose tools, dig far easier work nslookup, , short mode emits literal answers -- in case, ip addresses. take first address, if more 1 found:
# bash-specific idiom read -r address < <(dig +short google.com | grep -e '^[0-9.]+$') if need work posix sh, or broken versions of bash (such git bash, built mingw, process substitution doesn't work), might instead use:
address=$(dig +short google.com | grep -e '^[0-9.]+$' | head -n 1) dig available cygwin in bind-utils package; bind used dns server on unix, bind-utils (built same codebase) available unix-family operating systems well.
Comments
Post a Comment