using text file to get ip address from hostname

Thomas Rachel nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915 at spamschutz.glglgl.de
Mon Sep 17 16:37:12 EDT 2012


Am 15.09.2012 18:20 schrieb Dan Katorza:

> hello again friends,
> thanks for everyone help on this.
> i guess i figured it out in two ways.
> the second one i prefer the most.
>
> i will appreciate if someone can give me some tips.
> thanks again
>
> so...
> -------------------------------------------------------------
> First
> -------------------------------------------------------------
> #!/usr/bin/env python
> #Get the IP Address
>
>
> print("hello, please enter file name here>"),
> import socket
> for line in open(raw_input()):
>      hostname = line.strip()
>      print("IP address for {0} is {1}.".format(hostname,socket.gethostbyname(hostname)))
>
> ------------------------------------------------------------
> second
> ------------------------------------------------------------
> #!/usr/bin/env python
> #Get the IP Address
>
> import os
>
> print("Hello, please enter file name here>"),
> FILENAME = raw_input()
> if os.path.isfile(FILENAME):
>      print("\nFile Exist!")
>      print("\nGetting ip from host name")
>      print("\n")
>      import socket
>      for line in open (FILENAME):
>          hostname = line.strip()
>          print("IP address for {0} is {1}.".format(hostname,socket.gethostbyname(hostname)))
>      else:
>          print ("\nFinished the operation")
> else:
>      print ("\nFIle is missing or is not reasable"),
> ~

Comparing these, the first one wins if you catch and process exceptions. 
It is easier to ask for forgiveness than to get permission (EAFP, 
http://en.wikipedia.org/wiki/EAFP).

Bit I wonder that no one has mentionned that 
socket.gethostbyname(hostname) is quite old-age because it only returns 
IPv4 addresses (resp. only one of them).

OTOH, socket.getaddrinfo(hostname, 0, 0, socket.SOCK_STREAM) gives you a 
list of parameter tuples for connecting.

So which way you go above, you should change the respective lines to

for line in ...:
     hostname = line.strip()
     for target in socket.getaddrinfo(hostname, 0, socket.AF_UNSPEC,
             socket.SOCK_STREAM):
         print("IP address for {0} is {1}.".format(hostname,
             target[4][0]))


Thomas



More information about the Python-list mailing list