2011-04-13 690 views
2
if data.find('!scan') != -1: 
nick = data.split('!')[ 0 ].replace(':','') 
targetip = socket.gethostbyname(str(arg)) 
sck.send('PRIVMSG ' + chan + " :" ' scanning host' + targetip + '\r\n') 
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,) + '\r\n') 
    s.close() 

我得到这个错误:socket.gaierror:[错误11003]的getaddrinfo失败

targetip = socket.gethostbyname(str(arg)) 
socket.gaierror: [Errno 11003] getaddrinfo failed 
+0

你能成为一个更具体一点你的问题是什么,并给予一些额外的信息?什么是arg?你确定你有权访问你的DNS服务器吗?到目前为止,你已经做了什么来尝试解决这个问题? – 2011-04-13 20:12:22

+0

@Robert S. Barnes arg是用户在!扫描后提供的参数。例如:!扫描IP – SourD 2011-04-13 20:31:25

+0

'arg'的值是什么?你有解析器设置正确吗? – 2017-01-23 05:56:38

回答

1

在Windows上,socket.gethostbyname()调用getaddrinfo()的Winsock API调用,并且errno 11003 - WSANO_RECOVERY可由SYSTEMROOT引起环境变量未设置。

检查os.environ包含主叫socket.gethostbyname,前前SYSTEMROOT:

import os 
assert 'SYSTEMROOT' in os.environ 
相关问题