2013-03-13 7 views
5

पर मशीन का लैन आईपी पता प्राप्त करना तो मैं प्रोग्राम के चल रहे मशीन के लैन आईपी पते को प्राप्त करने की कोशिश कर रहा हूं और इसकी तुलना यूडीपी के माध्यम से आईपी पते पर की गई है।पायथन Ubuntu

हालांकि मैं जब का उपयोग करें:

print str(socket.gethostbyname(socket.gethostname())) 

यह 127.0.0.1 जो 192.168.1.9 होना चाहिए देता है।

मैंने लिनक्स मशीन को देखा है और इसे लो (लूपबैक) पोर्ट का आईपी पता मिल रहा है? मुझे नहीं पता कि यह वास्तव में क्या है लेकिन इसे eth0 का आईपी पता मिलना चाहिए।

मुझे पता चला है कि मैं बैश कमांड "ifconfig eth0" subprocess कर सकता हूं लेकिन यह एक स्ट्रिंग का एक बड़ा ब्लॉक देता है। मैं इसे अपनी आवश्यकता के अनुसार संसाधित कर सकता हूं, लेकिन यह एक बीगलबोन पर एक सेकंड में लगभग 3 गुना चल रहा है, इसलिए मैं इसे थोड़ा और अधिक प्रभावशाली बनाना चाहता हूं।

क्या ऐसा करने का एक और शानदार तरीका है?

क्या मैं सिर्फ gethostname का लक्ष्य बदल सकता हूं?

यह लो पोर्ट को लक्षित क्यों कर रहा है?

आपकी सहायता प्रबंधकों के लिए धन्यवाद।

+0

यदि कोई ऐसा करने का प्रयास कर रहा है और उनके पास एक ऐसा सर्वर है जिसके पास हमेशा इंटरनेट का उपयोग होगा, तो http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a -नेटवर्क-इंटर/जिस तरह से इस मुद्दे को हल किया गया है। लेकिन मेरे सर्वर में हमेशा इंटरनेट नहीं होगा, इसलिए मैं इसका उपयोग नहीं कर सकता। – Poodimizer

उत्तर

1

netifaces एक सुंदर मीठे पायथन मॉड्यूल की तरह लगता है जो आपके लिए चाल करना चाहिए।

+0

यह बहुत आशाजनक लग रहा है। मैं निश्चित रूप से इसे देखता हूं और आपको वापस भेजता हूं – Poodimizer

4

मशीन के पूर्ण योग्य डोमेन नाम लौटने का प्रयास करें:

print str(socket.gethostbyname(socket.getfqdn())) 

/etc/hosts शायद यही वजह है कि socket.gethostbyname() वापस नहीं करता है कि आप क्या उम्मीद एक प्रवेश 127.0.0.1 को होस्ट नाम को हल करने, है।

मूल प्रश्न पूछा गया और here का उत्तर दिया गया, लेकिन socket.getfqdn() समाधान एक त्वरित नज़र से बाहर नहीं निकला। यदि आप उस मार्ग पर जाने का फैसला करते हैं तो ifconfig आउटपुट पार्सिंग के लिए solution यहां आउटपुट है। आपकी समस्या को हल करने के लिए मानक पुस्तकालय पर्याप्त से अधिक लगता है।

+0

मैं इस धारणा के तहत था कि मेजबान फ़ाइल बाहरी सर्वरों के लिए सिर्फ एक डीएनएस लुकअप टेबल थी। प्रिंट स्ट्र (socket.gethostbyname (socket.getfqdn())) अभी भी वही चीज़ लौटा दी है (127.0.1.1)। – Poodimizer

+0

@Poodimizer 'socket.getfqdn()' वापसी क्या करता है? आपकी 'मेजबान' फ़ाइल को देखने में सहायक भी हो सकता है। – Bryan

+0

आप सही थे मेजबान फ़ाइल था: 127.0.0.1 स्थानीय होस्ट 127.0.1.1 OMAP मैं एक त्रुटि में चल रहा हूँ अभी तो मैं socket.fqdn नहीं चल सकती() अभी। सर्वर को रीबूट करना होगा। – Poodimizer