लिनक्स में ओपन पोर्ट की एक सूची प्राप्त करें


191

मुझे किसी एप्लिकेशन में उपयोग के लिए सभी मुक्त खुले बंदरगाहों को सूचीबद्ध करने के लिए लिनक्स कमांड की आवश्यकता है

lsof -i TCP| fgrep LISTEN

यह मदद करता है कि बंदरगाहों के रूप में सूचीबद्ध करने में मदद करने के लिए जरूरी नहीं है कि यह उपयोग के लिए नि: शुल्क हो। मैं उपयोग में नहीं आने वाले मुक्त बंदरगाहों की सूची कैसे बनाऊँ?

जवाबों:


258
netstat -lntu

जैसा कि @askmish ने कहा है कि आप अपने सिस्टम पर tcp और udp पोर्ट्स पर चलने वाली सेवाओं की सूची देंगे

  • -l = केवल सेवाएँ जो कुछ पोर्ट पर सुन रही हैं
  • -n = पोर्ट नंबर दिखाएं, सेवा नाम को हल करने का प्रयास न करें
  • -t = टीसीपी पोर्ट
  • -u udp पोर्ट
  • -p = कार्यक्रम का नाम

आपको 'p' पैरामीटर की आवश्यकता नहीं है क्योंकि आप केवल यह जानने में रुचि रखते हैं कि कौन से पोर्ट फ्री हैं और कौन सा प्रोग्राम उस पर नहीं चल रहा है।

यह केवल दिखाता है कि आपके सिस्टम पर कौन से पोर्ट उपयोग किए गए हैं, हालांकि। यह आपको अपने नेटवर्क की स्थिति नहीं बताता है जैसे कि यदि आप NAT के पीछे हैं और आप चाहते हैं कि कुछ सेवाएँ बाहर से सुलभ हों। या अगर फ़ायरवॉल बाहरी आगंतुकों के लिए पोर्ट को अवरुद्ध कर रहा है। उस स्थिति में, नैम बचाव में आता है। चेतावनी: केवल उन नेटवर्कों पर उपयोग करें जो आपके नियंत्रण में हैं। इसके अलावा, फ़ायरवॉल नियम हैं जो नैम्प पिंग्स को ब्लॉक कर सकते हैं, आपको सही परिणाम प्राप्त करने के लिए विकल्पों के साथ फील करना होगा।


19
ध्यान दें कि netstatकई प्रणालियों पर पदावनत किया गया है और ssइसके बजाय इसका उपयोग किया जाना चाहिए।
जोहू

1
लेकिन अगर आप बिजीबॉक्स ssमें शामिल हैं, तो शामिल नहीं है
jcollum

90

के बाद से net-toolsहटा दिया गया है , तो आप उपयोग कर सकते हैं ssआदेश के बजाय netstatअगर netstatआपकी मशीन पर मौजूद नहीं है:

ss -lntu

के समान काम करना चाहिए

netstat -lntu

अंतर्निहित मदद के अनुसार:

-n, --numeric       don't resolve service names
-l, --listening     display listening sockets
-t, --tcp           display only TCP sockets
-u, --udp           display only UDP sockets

3
एक और उपयोगी झंडा है -p जो सॉकेट की प्रक्रिया आईडी दिखाता है।
तलस्पिन_किता

21

यह कमांड ओपन नेटवर्क पोर्ट और उन प्रक्रियाओं को सूचीबद्ध करेगा जो उनके खुद के हैं:

netstat -lnptu

इसके बाद आप अपने सटीक चश्मे के परिणामों को फ़िल्टर कर सकते हैं।

आप nmapबंदरगाहों के बारे में अधिक बारीक परिणामों के लिए भी उपयोग कर सकते हैं ।


2
-P ध्वज को कुछ प्रक्रियाओं के लिए रूट विशेषाधिकारों की आवश्यकता होती है, इसलिए यह होगाsudo netstat -lnptu
klaus se

5

प्रतिक्रिया यातायात सहित सभी खुले हुए बंदरगाह:

netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l

3
सिर्फ यूनिक पोर्ट नंबर और केवल IPv4 की एक सूची :netstat -tuwanp4 | awk '{print $4}' | grep ':' | cut -d ":" -f 2 | sort | uniq
एरॉन सी। डी। ब्रुइन

परिणाम से संख्याओं को फ़िल्टर और निकालने का तरीका दिखाने के लिए +1। Netstat से stderr आउटपुट को हटाने के लिए संपादित किया गया (जो उबंटू में परिणाम के लिए हेडर जोड़ता है)।
डेटशमन

हम्म, दूसरे विचारों पर। -1 सवाल का जवाब नहीं देने के लिए।
डेटशमन

1

मूल प्रश्न पर मेरा कहना था कि वह अप्रयुक्त बंदरगाहों के बारे में पूछ रहा था, न कि वर्तमान में सेवाओं से जुड़े बंदरगाहों के बारे में। यदि यह मामला है, तो उन्हें सूचीबद्ध करने के लिए, उपयोग किए गए बंदरगाहों को सूचीबद्ध करने और दूसरों को अप्रयुक्त मानने के अलावा कोई विशिष्ट तरीका नहीं है।

ध्यान में रखने के लिए एक अतिरिक्त बिंदु: एक उपयोगकर्ता के रूप में, आप 1024 से कम पोर्ट नहीं खोल पाएंगे (आपको इसके लिए रूट अनुमति की आवश्यकता होगी)।


0

निम्न कमांड किसी भी यूनिक्स पर काम करेगा जो उबंटू / डेबियन के समान प्रारूप में आउटपुट करता है - जहां स्थानीय पता कॉलम 4 में है और आउटपुट में शीर्ष पर 2 लाइन हेडर शामिल है। यदि उन संख्याओं में से कोई भी भिन्न है, तो नीचे दिए गए awk कमांड को ट्वीक करें।

यदि आप केवल IPv4 चाहते हैं:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '0.0.0.0:' | sed 's/.*://' | sort -n | uniq

यदि आप केवल IPv6 चाहते हैं:

netstat -lnt | awk 'NR>2{print $4}' | grep -E ':::' | sed 's/.*://' | sort -n | uniq

यदि आप दोनों एक साथ चाहते हैं:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(0.0.0.0:|:::)' | sed 's/.*://' | sort -n | uniq

कमांड उन पोर्ट नंबरों की सूची को आउटपुट करता है जो सभी इंटरफेस पर सुन रहे हैं। यदि आप उन सभी बंदरगाहों को सूचीबद्ध करना चाहते हैं जो लोकलहोस्ट इंटरफ़ेस पर सुन रहे हैं, तो कुछ इस तरह का उपयोग करें:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq

0

प्रयत्न, कोशिश

sudo netstat -plnt | grep -E '(0.0.0.0:|:::|127.0.0.1:|::1:)' |  awk 'NR>2{print $7}' | sort -n  | uniq

और इसे देखो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.