2011-10-20 15 views
7

मैं पाइथन में socket.gethostbyaddr() का उपयोग करके आईपीएस की एक सूची को रिवर्स करने की कोशिश कर रहा हूं, जो कुछ मानों के लिए 'अज्ञात होस्ट' देता है, लेकिन उसी आईपी के लिए खुदाई का उपयोग होस्टनाम देता है । इसके अलावा, पाइथन मॉड्यूल का उपयोग करने से खुदाई काफी तेजी से प्रतीत होती है, क्या इसके लिए कोई विशिष्ट कारण है?पायथन के सॉकेट का उपयोग करने में कठिनाई .gethostbyaddr()

import socket 

# This returns 'Unknown Host' 
name, alias, addresslist = socket.gethostbyaddr('114.143.51.197') 
+1

gethostbyaddr मेरे लिए ठीक काम करता है जब मैं 4.2.2.2 रिवर्स करता हूं। कोड समस्या –

+0

आयात सॉकेट नाम है जो, उर्फ, addresslist = socket.gethostbyaddr ('114.143.51.197') कृपया पोस्ट यह रिटर्न 'अज्ञात होस्ट' जबकि खुदाई -x 114.143.51.197 + कम मुझे देता है होस्ट नाम। उपयोग किए गए DNS रिज़ॉल्यूशन के लिए नेमसर्वर 8.8.8.8 और 8.8.4.4 है, अभी भी कोई भाग्य नहीं है। – bilkulbekar

उत्तर

7

मुझे खेद है, लेकिन आप गलत हैं। 114.143.51.197 एक PTR रिकॉर्ड नहीं है ... इसलिए socket.gethostbyaddr() एक त्रुटि फेंक चाहिए ... आप निश्चित रूप से एक try/except खंड है कि socket.herror

>>> def lookup(addr): 
...  try: 
...   return socket.gethostbyaddr(addr) 
...  except socket.herror: 
...   return None, None, None 
... 
>>> name,alias,addresslist = lookup('4.2.2.2') 
>>> print name 
vnsc-bak.sys.gtei.net 
>>> name,alias,addresslist = lookup('114.143.51.197') 
>>> print name 
None 
>>> 

114.143.51.197 के लिए DNS रिवर्स लुकअप के लिए जाल की जरूरत है ... ध्यान दें कि यह एक वैध PTR रिकॉर्ड

[[email protected] ~]$ dig @8.8.8.8 -x 114.143.51.197 

; <<>> DiG 9.6-ESV-R4 <<>> @8.8.8.8 -x 114.143.51.197 
; (1 server found) 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 4735 
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 

;; QUESTION SECTION: 
;197.51.143.114.in-addr.arpa. IN  PTR 

;; AUTHORITY SECTION: 
114.in-addr.arpa.  1800 IN  SOA  ns1.apnic.net. read-txt-record-of-zone-first-dns-admin.apnic.net. 17812 7200 1800 604800 172800 

;; Query time: 182 msec 
;; SERVER: 8.8.8.8#53(8.8.8.8) 
;; WHEN: Tue Nov 22 05:11:36 2011 
;; MSG SIZE rcvd: 134 

[[email protected] ~]$ python 
Python 2.5.2 (r252:60911, Jan 24 2010, 14:53:14) 
[GCC 4.3.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import socket 
>>> socket.gethostbyaddr('114.143.51.197') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
socket.herror: (1, 'Unknown host') 
>>> 

यह एक वैध PTR रिकॉर्ड की तरह क्या दिखना चाहिए है नहीं है ...

[[email protected] ~]$ dig -x 4.2.2.2 

; <<>> DiG 9.6-ESV-R4 <<>> -x 4.2.2.2 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61856 
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 1 

;; QUESTION SECTION: 
;2.2.2.4.in-addr.arpa.   IN  PTR 

;; ANSWER SECTION: 
2.2.2.4.in-addr.arpa. 86400 IN  PTR  vnsc-bak.sys.gtei.net. 

;; AUTHORITY SECTION: 
2.4.in-addr.arpa.  86400 IN  NS  dnsauth2.sys.gtei.net. 
2.4.in-addr.arpa.  86400 IN  NS  dnsauth1.sys.gtei.net. 
2.4.in-addr.arpa.  86400 IN  NS  dnsauth3.sys.gtei.net. 

;; ADDITIONAL SECTION: 
dnsauth1.sys.gtei.net. 1800 IN  A  4.2.49.2 

;; Query time: 308 msec 
;; SERVER: 127.0.0.1#53(127.0.0.1) 
;; WHEN: Tue Nov 22 05:10:16 2011 
;; MSG SIZE rcvd: 158 

[[email protected] ~]$ python 
Python 2.5.2 (r252:60911, Jan 24 2010, 14:53:14) 
[GCC 4.3.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import socket 
>>> socket.gethostbyaddr('4.2.2.2') 
('vnsc-bak.sys.gtei.net', [], ['4.2.2.2']) 
>>> 
+0

मुझे यह मिल गया .. मैंने सोचा कि खुदाई मुझे मेजबाननाम प्रदान कर रही थी जबकि यह नहीं थी। धन्यवाद – bilkulbekar

संबंधित मुद्दे