#python #sockets #irc
#python #сокеты #irc
Вопрос:
if data.find('!scan') != -1:
nick = data.split('!')[ 0 ].replace(':','')
targetip = socket.gethostbyname(str(arg))
sck.send('PRIVMSG ' chan " :" ' scanning host' targetip 'rn')
for i in range(20, 1025):
s = socket(AF_INET, SOCK_STREAM)
result = s.connect_ex((targetip, i))
if (result == 0) :
s.send('PRIVMSG ' chan " :" 'port %d: OPEN' % (i,) 'rn')
s.close()
Я получаю эту ошибку:
targetip = socket.gethostbyname(str(arg))
socket.gaierror: [Errno 11003] getaddrinfo failed
Комментарии:
1. Не могли бы вы немного конкретнее сформулировать свой вопрос и предоставить некоторую дополнительную информацию? Что находится в arg? Вы уверены, что у вас есть доступ к вашему DNS-серверу? Что вы уже сделали, чтобы попытаться устранить эту проблему?
2. @Robert S. Barnes arg — это аргумент, который пользователь приводит после !сканирования .. пример: !сканировать IP
3. Каково значение
arg
? Правильно ли настроены ваши преобразователи?
Ответ №1:
В Windows socket.gethostbyname()
вызывает getaddrinfo()
вызов Winsock API, и ошибка 11003 — WSANO_RECOVERY может быть вызвана тем, что не установлена переменная окружения SYSTEMROOT.
Проверьте, содержит ли os.environ SYSTEMROOT, прежде чем вызывать socket.gethostbyname, например:
import os
assert 'SYSTEMROOT' in os.environ