2011-04-13 140 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 
相關問題