मुझे यह कैसे पता चलेगा कि कोई पोर्ट Ubuntu 8.04 पर उपलब्ध है?


28

क्या कोई आदेश है जो मैं बैश से चला सकता हूं जो मुझे बताएगा कि क्या कोई पोर्ट पहले से ही खुला है?

जवाबों:


37

पोर्ट का उपयोग करके वर्तमान में जांच करने के लिए "नेटस्टैट" का उपयोग करें।

netstat -antp

प्रोटो रिकव-क्यू सेंड-क्यू स्थानीय पता विदेशी पता राज्य पीआईडी ​​/ कार्यक्रम का नाम
tcp 0 0 xxx.xxx.xxx.xxx 0.0.0.0:* LISTEN 16297 / नाम     
tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* LISTEN 16297 / नाम     
tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* LISTEN 16297 / नाम     
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 16297 / नाम     

2
"netstat -antp | grep 80" जहां 80 की संख्या पोर्ट खोज के लिए है।
उमैर ए।

13

यह (netstat) सबसे तेज़ समाधान है ...

netstat -lnt

... लेकिन यह आपको अधिक नियंत्रण (गति की लागत पर (कभी-कभी बहुत अधिक गति)) देता है ...

lsof -n -i -a -u www-data

उदाहरण के लिए उपर्युक्त उदाहरण से आप सभी टीसीपी पोर्ट खोलते हैं और LISTENराज्य में, और ( -a) अपाचे ( www-data) उपयोगकर्ता से संबंधित हैं ।


8

सभी अच्छे जवाब।

हालाँकि आप उल्लेख नहीं करते हैं कि क्या आप कंप्यूटर पर लॉग इन हैं। ; P

यदि नहीं, तो nmap अपने दोस्त है।

शुरुआत के लिए प्रयास करें:

nmap -Otarget

amap भी एक अच्छा विकल्प है जो बैनर पन्नों को हथियाने के द्वारा सर्वर सॉफ्टवेयर का अनुमान लगाने का भी प्रयास करेगा।

शुरुआत के लिए प्रयास करें:

amaptarget1-6000


7

प्रयत्न

lsof -i :<port number>

यदि आपको कोई परिणाम मिलता है, तो कुछ सुनने और बाध्य होता है, जैसे

# lsof -i :80
COMMAND   PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nginx    1833 nobody    3u  IPv4 51091229      0t0  TCP odessa.cheney.net:http->79.173.188.214:52918 (ESTABLISHED)
nginx    1833 nobody    5u  IPv4 46221856      0t0  TCP odessa.cheney.net:http->66.36.243.182:37876 (CLOSE_WAIT)
nginx    1833 nobody    9u  IPv4 34733048      0t0  TCP localhost.localdomain:http (LISTEN)
nginx    1833 nobody   10u  IPv4 34733049      0t0  TCP odessa.cheney.net:http (LISTEN)
nginx    1833 nobody   14u  IPv4 46221857      0t0  TCP odessa.cheney.net:http->66.36.243.182:37880 (CLOSE_WAIT)
nginx    1833 nobody   15u  IPv4 51091030      0t0  TCP odessa.cheney.net:http->msnbot-65-55-106-132.search.msn.com:51708 (ESTABLISHED)
nginx   11832   root    9u  IPv4 34733048      0t0  TCP localhost.localdomain:http (LISTEN)
nginx   11832   root   10u  IPv4 34733049      0t0  TCP odessa.cheney.net:http (LISTEN)

4
netstat -tlnp  

Isping वाले tcp पोर्ट दिखाएं l, nकेवल oes दिखाएं (नामों का समाधान न करें - यह तेज़ होता है) और उस रोशन को दिखाएं pजो सुनने का काम कर रहा है ( pकेवल कार्य यदि आप रूट हैं

netstat -ulnp  

uडीपी पोर्ट दिखाएँ जो lकिटेन हो रहे हैं , nकेवल दिखाता है (नामों को हल न करें - यह तेज pहोता है p)

netstat -unp  

uडीपी पोर्ट दिखाएं जो खुले हैं, लेकिन सुन नहीं रहे हैं, nकेवल दिखाता है (नामों को हल न करें- यह तेज है) बनाता है और उस pरॉग को दिखाएं जो सुनने का काम कर रहा है ( pकेवल काम करता है यदि आप रूट हैं)

netstat -an

aउपयोग में ll पोर्ट दिखाएं , nकेवल दिखाता है - नाम हल न करें

lsof -i <proto>@<host>:<port>

जैसे

lsof -i tcp@localhost:25

यह देखने के लिए कि पोर्ट लोकलहोस्ट 25 / टीसीपी पर कुछ भी सुनाई दे रहा है या नहीं

lsof -i tcp@0.0.0.0:636 

यह देखने के लिए कि क्या कोई होस्ट या इंटरफ़ेस के लिए या तो स्थानीय (या स्थानीय) सुनने या (स्थानीय या दूरस्थ) से जुड़े सॉकेट हैं


2

lsof (सूची ओपन फाइलें) यह देखने के लिए एक अच्छा उपकरण है कि क्या कोई प्रक्रिया किसी पोर्ट पर सुन रही है

lsof -P | grep: <पोर्ट-नंबर>

नेटस्टैट यह देखने के लिए एक अच्छा उपकरण है कि क्या कोई सक्रिय कनेक्शन हैं।

netstat -n | grep: <पोर्ट-नंबर>


2

आप उल्लेख नहीं करते हैं कि आप किस प्रोटोकॉल का उपयोग करना चाहते हैं, यानी टीसीपी या यूडीपी - और यह महसूस करना भी महत्वपूर्ण है कि "पोर्ट" काफी दानेदार नहीं है क्योंकि सिस्टम सॉकेट को अलग करने का समर्थन करता है। उदाहरण के लिए, यदि आपके सिस्टम में कई आईपी पते हैं, तो पोर्ट 80 सभी आईपी पते पर उपयोग में हो सकता है (या तो आवेदन "0.0.0.0" या "::" या उत्तराधिकार में प्रत्येक आईपी पते के लिए बाध्य है), या इसमें हो सकता है केवल उन IP पतों के सबसेट पर उपयोग करें।

एक पोर्ट / पता नि: शुल्क है और उपलब्ध है, यह निर्धारित करने का सबसे अच्छा, और पक्का तरीका, इसे बांधने का प्रयास करना है। नेटकट इसके लिए आसान है।

nc -l [-s abcd] -p NN

टीसीपी पोर्ट एनएन पर बांधने का प्रयास करेगा (वैकल्पिक, डिफ़ॉल्ट सभी पते होंगे) abcd-UDP में समान करने के लिए -u विकल्प जोड़ें।

अगला, यह बताने के लिए कि क्या पोर्ट वास्तव में "खुला" है जैसा कि आप पूछते हैं - आपको संभावित फ़ायरवॉल नियमों को देखना शुरू करना होगा। फिर से सबसे आसान काम पोर्ट से जुड़ने की कोशिश करना है। नेटकट को ऊपर, सर्वर पर, और क्लाइंट द्वारा आपके द्वारा खोले गए पोर्ट से कनेक्ट करने का प्रयास करने के लिए नेटकैट का उपयोग करें।

nc [-u] abcd एनएन

-U ध्वज निर्दिष्ट किया गया है, तो UDP का उपयोग करते हुए, abcd पर पोर्ट NN से कनेक्ट होगा। फिर आप क्लाइंट एंड में इनपुट टाइप कर सकते हैं, और इसे सर्वर पर दिखाना चाहिए। यदि ऐसा नहीं होता है, तो आपको सिस्टम और नेटवर्क विशिष्ट टूल पर ध्यान देने की आवश्यकता है।


2

मैं फ्यूज़र का उपयोग करता हूं (पैकेज psmisc में):

fuser -n tcp पोर्ट

वापस लाता है पीआईडी इस बंदरगाह के लिए बाध्य प्रक्रिया के।

अगर यह जानना है कि क्या कोई पोर्ट सुन रहा है, तो अच्छा पुराना टेलनेट करता है :)

टेलनेट 127.0.0.1 पोर्ट


2

यह वन-लाइनर आपको उपयोग में आने वाले सभी टीसीपी पोर्ट की एक सूची देगा। यह उबंटू और ओएस एक्स पर बैश में काम करता है।

netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq

सूची में बिना किसी अतिरिक्त जानकारी के एक पोर्ट प्रति पंक्ति होगी।


इसे प्यार करना! for port in $(netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq); do echo EXECUTE COMMAND FOR PORT $port; done
मारना

0

ऐसा करने के कई तरीकों ने मुझे समस्याएं दीं क्योंकि वे लिनक्स और ओएक्सएक्स पर काम नहीं करते थे, और / या क्योंकि वे डॉकटर द्वारा उपयोग किए जाने वाले पोर्ट, या प्रक्रियाएं नहीं दिखाते थे जो रूट के स्वामित्व में थे। अब मैं सिर्फ इस जावास्क्रिप्ट प्रोग्राम का उपयोग करता हूं:

(सुनिश्चित करें कि आपने नोड स्थापित किया है और यह nodeन केवल के साथ काम करता हैnodejs या तदनुसार कार्यक्रम को बदलता है)

check-portअपने पथ या आपके प्रोजेक्ट में नामक फ़ाइल को निम्न सहेजें

#!/usr/bin/env node
var http = require('http');
var app = new http.Server();
app.listen(process.argv[2], () => {
  process.exit(0)
});

अनुमतियाँ सेट करें

chmod +x path/to/check-port

अपने रास्ते से भागो

check-port 8080

या उसी निर्देशिका से चलते हैं

./check-port 8080

अब तक यह बहुत अच्छा काम कर रहा है।

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