4 / 4 / 3
Регистрация: 05.11.2012
Сообщений: 243
1

Определить хост по ip адресу

20.01.2020, 17:50. Показов 6202. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени друзья! Помогите пожалуйста с задачей, есть список ip адресов в txt, мне надо проверить, есть ли у этих адресов какие нибудь хосты, и если есть, то записать их в отдельный тхт файл, а те адреса у которых нет, их пропустить. Я так понимаю, что надо воспользоваться try ... except ... если у адреса есть хост, запиши, если нет, то пропусти, но не могу разобраться с синтаксисом, буду рад, если подскажите как правильно написать, или если подскажите в какую сторону копать

Python
1
2
3
4
5
6
7
8
9
import socket
 
def getHost(ip_addr):
    return socket.gethostbyaddr(ip_addr)
 
f = open('2.txt')
for line in f.readlines():
    socket.gethostbyaddr(line)
    print('Имя хоста:', getHost(line))
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2020, 17:50
Ответы с готовыми решениями:

Как определить хост?
Здрям! В мониторинге вижу исходящий траффик с IP-адреса. При запуске команды nbtstat -A IP...

Как определить закрыл ли удаленный хост соединение?
в цикле читаю с сокета: iResult = recv(thsocket, buf, sizeof(buf), 0); if (iResult > 0) {...

Хост-чтения и Хост-записи
Доброго дня! 1. Имеем девайс Corsaor Force LS SSD 60 Гб. 2. В работе на Домашнем ПК где-то с пол...

Как определить где в компьютере расширенный pci-usb хост-контроллер ?
как определить где в компьютере расширенный pci-usb хост-контроллер ??

4
Просто Лис
Эксперт Python
5248 / 3269 / 1009
Регистрация: 17.05.2012
Сообщений: 9,594
Записей в блоге: 9
21.01.2020, 11:54 2
Reverse DNS lookup

Python
1
2
3
import socket
 
print(socket.getnameinfo(('127.0.0.1', 0), socket.NI_NAMEREQD))
1
4 / 4 / 3
Регистрация: 05.11.2012
Сообщений: 243
22.01.2020, 00:20  [ТС] 3
Рыжий Лис, подскажите пожалуйста, при попытке запроса выдает ошибку [Errno 11001] getaddrinfo failed, я так понимаю, что он ругается на то, что по данному ip адресу нет хоста? В 1.тхт у меня хранятся ip адреса, я в цикле прохожу по ним, и передаю в socket.gethostbyaddr(loop), если возвращается ответ, то записываем в 2.тхт, если нет, то пропускаю вышеупомянутую ошибку, и повторяю цикл, но проблема в том, что практически ни один из адресов не возвращает мне ответ, хотя если отдельно от всего этого я передаю адрес в socket.gethostbyaddr(ip_addr) то таким образом я получаю ответ, сначала я подумал что цикл срабатывает слишком быстро, и не хватает времени на запрос, поэтому добавил таймер, но и это не помогло, скорее всего я довольно хорошо туплю, и не понимаю, разъясните пожалуйста,или направьте меня в какую сторону мне копать, буду вам благодарен
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import socket
import traceback
import time
 
f = open('1.txt')
s = open('2.txt', 'a')
c = open('3.txt', 'a')
timing = time.time()
for loop in f.readlines():
    try:
        time.sleep(1.0)
        dns = socket.gethostbyaddr(loop)
        s.write(str(dns))
        s.close()
    except Exception as e:
        print('Ошибка:\n', traceback.format_exc())
Добавлено через 6 минут
Сейчас заметил одну особенность, почему то, ip адрес который стоит в конце цикла, именно он срабатывает, и присылает мне ответ, а все остальные адреса пропускаются, ради интереса ставил в конец списка разные адреса, и каждый раз, последний адрес присылает мне ответ в виде имени хоста, а все остальные адреса пропускаюся
0
Эксперт Python
5407 / 3831 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
22.01.2020, 00:27 4
Лучший ответ Сообщение было отмечено borockov как решение

Решение

Python
1
2
3
>>> open("test.txt").readlines()
['123\n', '123\n', '123\n', '123']
>>>
Видите перевод строки? И я вижу. strip кто будет делать?

Добавлено через 1 минуту
Python
1
2
3
4
5
6
>>> socket.gethostbyaddr("localhost\n")
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    socket.gethostbyaddr("localhost\n")
socket.gaierror: [Errno 11004] getaddrinfo failed
>>>
Добавлено через 51 секунду
Python
1
2
3
4
5
6
7
8
>>> socket.gethostbyaddr("ya.ru\n")
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    socket.gethostbyaddr("ya.ru\n")
socket.gaierror: [Errno 11004] getaddrinfo failed
>>> socket.gethostbyaddr("ya.ru")
('ya.ru', [], ['87.250.250.242'])
>>>
1
4 / 4 / 3
Регистрация: 05.11.2012
Сообщений: 243
22.01.2020, 01:06  [ТС] 5
какой же я тупой=) спасибо большое, теперь все работает как надо =)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2020, 01:06
Помогаю со студенческими работами здесь

Определить номер узла по IP-адресу
Добрый день. Прошу помочь с решением следующей задачи: Как найти номер узла по IP-адресу и маске...

Как определить IP по E-Mail адресу?
Есть ли возможность определить IP адрес отправителя письма по его email адресу?

Вызвано исключение по адресу, нарушение прав доступа при чтении по адресу
Помогите разобраться. Написал класс для создания матрицы и массива. С массивом нет проблем, а вот...

Вызвано исключение по адресу, нарушение прав доступа при чтении по адресу
void perechAvtoDinam(avto x, int n, spisok* py, int&amp; k) { int i, j, fl; spisok* p; ...

По четырехбайтовому IP-адресу узла и IP-адресу маски подсети вычислить сетевой адрес
Помогите пожалуйста решить задачу : Разработайте программу, которая по четырехбайтовому IP-адресу...

Необработанное исключение по адресу, нарушение прав доступа при записи по адресу
вот само задание: Авиарейсы (номер рейса, пункт назначения, время вылета, дата вылета, стоимость...

Инструкция по адресу обратилась к памяти по адресу. Память не может быть read
Пропали компоненты COM с компьютера, так как при попытке их выбрать Visual Studio попросту вылетает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru