2016-08-05 3 views
0

Играли с этим. Еще не очистили его. Это в основном делает то, что делает nslookup. Принимает (или несколько) имя хоста из текстового файла и возвращает соответствующий адрес IP.Извлечение определенных данных из нескольких строк

def getIPAddresses(file): 
    emptyList = [] 
    someString = ".com" 
    with open(file, "r+") as output: 
     for line in output: 
      emptyList.append(line) 
      my_new_list = [x.strip() + someString for x in emptyList] 
     return(my_new_list) 


def lookup(): 
    try: 
     while True: 
      enterSomething = input("Enter something: ") 
      if os.path.exists(enterSomething): 
       for n in getIPAddresses(enterSomething): 
        ip_info = socket.getaddrinfo(n, 80) 
        b = list(["nslookup of " + str(n) +"\n"] + ip_info +(["\n" + "Result of " +str(n)])) 
        values = ''.join(str(v) for v in b) 
        abc = values+ "\n" 
        print() 
        print(abc) 
       break 
      elif not os.path.exists(enterSomething): 
       print("No such file or directory " + str(enterSomething))  
    except(UnicodeError): 
     print("") 

Так что, если у меня был текстовый файл со следующим:

www.google 
www.espn 

было бы вернуть

nslookup of www.google.com 
(<AddressFamily.AF_INET: 2>, 0, 0, '', ('172.217.1.68', 80))(<AddressFamily.AF_INET6: 23>, 0, 0, '', ('2607:f8b0:4006:808::2004', 80, 0, 0)) 
Result of www.google.com 


nslookup of www.espn.com 
(<AddressFamily.AF_INET: 2>, 0, 0, '', ('199.181.133.5', 80)) 
Result of www.espn.com 

Мой вопрос заключается в том, что есть способ, я могу только извлечь соответствующий ip-адреса, такие как 172.217.1.68 и 2607:f8b0:4006:808::2004 для www.google.com и т. д.?

+0

Как насчет напечатать только информацию сокета, а не делать все это конкатенация строк? –

ответ

0

Итак, ваш код возвращает кортеж, кортежи можно индексировать так же, как список.

вот что я испытал

google = socket.getaddrinfo('www.google.com', 80) 
google[0][4] 
returns ('74.125.141.104', 80) 

таким образом, чтобы получить адрес IP-ассоциированный сделать

google[0][4][0] 

получить

'74.125.141.104' 
Смежные вопросы