मैं उन बंदरगाहों को कैसे प्राप्त करूं जो पाइथन का उपयोग करने पर एक प्रक्रिया सुन रही हैं? प्रक्रिया का ढक्कन ज्ञात है।बंदरगाहों को कैसे प्राप्त किया जा सकता है जो सुनने में एक प्रक्रिया है?
उत्तर
आप netstat -lnp
का उपयोग कर सकते हैं, अंतिम कॉलम में पिड और प्रक्रिया का नाम होगा। पायथन में आप इस कमांड के आउटपुट को पार्स कर सकते हैं।
यदि आप netstat या lsof जैसे किसी प्रोग्राम के आउटपुट को पार्स नहीं करना चाहते हैं, तो आप/proc फाइल सिस्टम के माध्यम से grovel कर सकते हैं और फ़ाइलों में दस्तावेज़ों को खोजने का प्रयास कर सकते हैं। /proc/<pid>/net/tcp
आपके लिए विशेष रूप से दिलचस्प हो सकता है। बेशक, उन फ़ाइलों का प्रारूप कर्नेल रिलीज़ के बीच बदल सकता है, इसलिए पार्सिंग कमांड आउटपुट को आम तौर पर अधिक विश्वसनीय माना जाता है।
दो मेरा उत्तर करने के लिए भागों के होते हैं:
1. खोल
पहले भाग के लिए, netstat
काम करेगा में जानकारी प्राप्त हो रही है, लेकिन मैं lsof
का उपयोग कर पसंद करते हैं, के बाद से यह प्रयोग किया जा सकता अधिक जानकारीपूर्ण और संक्षिप्त सूची निकालने के लिए। सटीक विकल्प आपके ओएस, गिरी और संकलन विकल्पों के आधार पर भिन्न हो सकते हैं उपयोग करने के लिए है, लेकिन मेरा मानना है कि आप कुछ इस तरह हैं:
lsof -a -p23819 -i4
कहाँ 23819
पीआईडी आप के लिए चयन कर रहे हैं है, और i4
अर्थ है सभी आईपीवी 4 सॉकेट (हालांकि आप आईपीवी 6 के लिए i6
चाहते हैं, जैसा मामला हो सकता है)। वहां से, आप केवल सॉकेट सुनने के लिए grep के माध्यम से पाइप कर सकते हैं।
lsof -a -p23819 -i4 | grep LISTEN
(lsof
संस्करण 4.82 में, आप अतिरिक्त -sTCP:LISTEN
झंडा grep
के बजाय सुन सॉकेट चयन करने के लिए उपयोग कर सकते हैं, हालांकि इस विकल्प संस्करण 4.78 में वापस उपलब्ध हो प्रतीत नहीं होता है)
2।
012,351,641: अजगर सेआप lsof
कॉल करने के लिए और उत्पादन को पढ़ने, अजगर से, subprocess
मॉड्यूल का उपयोग कर, तो तरह सक्षम होना चाहिए lsof
कॉलिंग
from subprocess import Popen, PIPE
p1 = Popen(['lsof', '-a', '-p23819', '-i4'], stdout=PIPE)
p2 = Popen(["grep", "LISTEN"], stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]
आशा है कि इससे मदद मिलती है!
आप psutil उपयोग कर सकते हैं:
>>> import psutil
>>> p = psutil.Process(2549)
>>> p.name()
'proftpd: (accepting connections)'
>>> p.connections()
[connection(fd=1, family=10, type=1, local_address=('::', 21), remote_address=(), status='LISTEN')]
... सॉकेट सुनने के लिए फ़िल्टर करने के लिए:
>>> [x for x in p.get_connections() if x.status == psutil.CONN_LISTEN]
[connection(fd=1, family=10, type=1, local_address=('::', 21), remote_address=(), status='LISTEN')]
>>>
एक बात है कि उल्लेख नहीं किया गया था। पायथन में अधिकांश बंदरगाह अनुप्रयोग कमांड लाइन तर्क लेते हैं। आप पार्स/proc/pid/cmdline पार्स कर सकते हैं और पोर्ट नंबर को पार्स कर सकते हैं। यह कनेक्शन के टन के साथ सर्वर पर एसएस या नेटस्टैट का उपयोग करने के बड़े ओवरहेड से बचाता है।
- 1. क्या मोंगोडीबी को प्रक्रिया में होस्ट किया जा सकता है?
- 2. Cpython में क्या किया जा सकता है जो IronPython में नहीं किया जा सकता है?
- 3. प्रक्रिया को एक्सेस नहीं किया जा सकता है क्योंकि इसका उपयोग किसी अन्य प्रक्रिया द्वारा किया जा रहा है
- 4. बटन को फ़ोकस कैसे प्राप्त किया जा सकता है?
- 5. जावा में स्क्रीन रिज़ॉल्यूशन कैसे प्राप्त किया जा सकता है?
- 6. पायथन में एक स्ट्रिंग में अंदरूनी कोष्ठक के मूल्य को कैसे प्राप्त किया जा सकता है?
- 7. पायथन डिस्ट्यूट, एक कंपाइलर कैसे प्राप्त किया जा रहा है?
- 8. DLLImport Int ** - यह कैसे किया जा सकता है अगर यह किया जा सकता है
- 9. क्या एक बंडल सेवा में पास किया जा सकता है?
- 10. स्ट्रिंगबिल्डर को स्ट्रिंग में कैसे परिवर्तित किया जा सकता है []?
- 11. जावा में स्ट्रिंग को कैसे सत्यापित किया जा सकता है?
- 12. क्या एक वर्ग जो स्थिर क्षेत्र में खुद को संदर्भित कर सकता है कचरा इकट्ठा किया जा सकता है?
- 13. रेल में, वर्तमान समय क्षेत्र (Time.zone) को प्रारूप में कैसे प्राप्त किया जा सकता है जिसका उपयोग ActiveSupport :: TimeZone [zone] .parse() के साथ किया जा सकता है?
- 14. हैश को स्ट्रिंग में परिवर्तित नहीं किया जा सकता है?
- 15. , इसे कब मुक्त किया जा सकता है?
- 16. क्या छोटे चर नाम से प्राप्त किया जा सकता है?
- 17. कक्षा क्षेत्रों को कैसे शुरू किया जा सकता है?
- 18. NSDictionary में कुंजी को डुप्लिकेट किया जा सकता है?
- 19. यदि कोई प्रक्रिया या फ़ंक्शन पॉइंटर है तो मुझे फ़ील्ड का पता कैसे प्राप्त किया जा सकता है?
- 20. सी ++ में इसके नाम से प्रोसेस हैंडल कैसे प्राप्त किया जा सकता है?
- 21. कैसे कैश को पराजित किया जा सकता है?
- 22. एकाधिक बंदरगाहों को सुनने के लिए मैं एक पायथन HTTP सर्वर कैसे लिखूं?
- 23. क्या पीडीएफ को वेक्टर छवि प्रारूप में परिवर्तित किया जा सकता है जिसे .NET से मुद्रित किया जा सकता है?
- 24. टॉमकैट में मल्टीपल वेब एप्लिकेशन को कैसे तैनात किया जाए जो विभिन्न बंदरगाहों पर चलेगा?
- 25. क्या है कि संग्रहीत प्रक्रिया में पारित किया जा सकता मानकों की अधिकतम संख्या है
- 26. क्या घोषणा में एक संघ शुरू किया जा सकता है?
- 27. स्पार्क लेबल को कैसे स्किन किया जा सकता है?
- 28. एक देशी मोबाइल एप्लिकेशन में क्या हासिल किया जा सकता है जो HTML5 वेब ऐप में नहीं किया जा सकता है?
- 29. क्या इटरेटर को पायथन में रीसेट किया जा सकता है?
- 30. डाटाबेस का उपयोग दूसरी प्रक्रिया द्वारा किया जा रहा है ... लेकिन क्या प्रक्रिया है?
धन्यवाद। psutil एक अच्छा मॉड्यूल है। लेकिन एकमात्र समस्या यह है कि मॉड्यूल का उपयोग करने से पहले इसे स्थापित करने की आवश्यकता है। और psutil स्थापित करने के लिए जीसीसी और पायथन हेडर स्थापित करने की जरूरत है। तो psutil का उपयोग कर परियोजना स्थापित करना मुश्किल होगा। – mtoloo
psutil को gcc की आवश्यकता है क्योंकि इसमें सी कोड शामिल है जिसे संकलित करने की आवश्यकता है। मैं कहता हूं कि यह स्थापित करना मुश्किल नहीं है, खासकर लिनक्स पर। उबंटू पर, उदाहरण के लिए, आपको बस "पायथन-देव इंस्टॉल करें" और "पीआईपी स्थापित psutil" की आवश्यकता है और आप कर चुके हैं। –