10.5 Finding Your Own Name and Address
Credit: Luther Blissett
10.5.1 Problem
You want to find
your own fully qualified hostname and IP address.
10.5.2 Solution
The socket module has functions that help with
this task:
import socket
myname = socket.getfqdn(socket.gethostname( ))
myaddr = socket.gethostbyname(myname)
This gives you your primary, fully qualified domain name and IP
address. You might have other names and addresses, and if you want to
find out about them, you can do the following:
thename, aliases, addresses = socket.gethostbyaddr(myaddr)
print 'Primary name for %s (%s): %s' % (myname, myaddr, thename)
for alias in aliases: print "AKA", alias
for address in addresses: print "address:", address
10.5.3 Discussion
gethostname
is specifically useful only to find out your hostname, but the other
functions used in this recipe are for more general use.
getfqdn
takes a domain name that may or may not be fully qualified and
normalizes it into the corresponding fully qualified domain name
(FQDN) for a hostname. gethostbyname can accept
any valid hostname and look up the corresponding IP address (if name
resolution is working correctly, the network is up, and so on), which
it returns as a string in dotted-quad form (such as
'1.2.3.4').
gethostbyaddr
accepts a valid IP address as a string in dotted-quad form (again, if
reverse DNS lookup is working correctly on your machine, the network
is up, and so on) and returns a tuple of three items. The first item
is a string, the primary name by which the host at that IP address
would like to be known. The second item is a list of other names
(aliases) by which that host is known�note that it can be an
empty list. The third item is the list of IP addresses for that host
(it will never be empty because it contains at least the address you
passed when calling gethostbyaddr).
If an error occurs during the execution of any of these functions,
the failing operation raises an exception of the
socket.error class.
10.5.4 See Also
Documentation for the standard library module
socket in the Library
Reference; Perl Cookbook Recipe 17.8.
|