एक विशिष्ट पोर्ट पिंग करें


670

बस एक त्वरित पवित्रता की जाँच करें।

क्या आप किसी मशीन के विशिष्ट पोर्ट को पिंग कर सकते हैं, और यदि हां, तो क्या आप एक उदाहरण प्रदान कर सकते हैं?

मैं कुछ ऐसा ढूंढ रहा हूं ping ip address portNum


1
खिड़कियों के लिए इस प्रश्न की जाँच की जा सकती है
npocmaka

जवाबों:


720

आप पोर्ट को पिंग नहीं कर सकते, क्योंकि पिंग ICMP का उपयोग कर रहा है जिसमें पोर्ट की अवधारणा नहीं है। पोर्ट टीसीपी और यूडीपी जैसे ट्रांसपोर्ट लेयर प्रोटोकॉल से संबंधित हैं । हालाँकि, आप यह देखने के लिए कि क्या पोर्ट खुले हैं या नहीं , नैम्प का उपयोग कर सकते हैं

nmap -p 80 example.com

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


15
आप -PNदिए गए पोर्ट का परीक्षण करने से पहले होस्ट डिस्कवरी नैम्प को छोड़ना चाहते हैं ।
फ्लोक्रा

27
कुछ लोगों को कुछ परेशानी से बचाने के लिए: लिंक (या Google nmap windows) से विंडोज़ पर nmap / can / be इंस्टॉल किया जा सकता है , लेकिन यह VPN पर काम नहीं करता है। PaPing पते की एक श्रृंखला को स्कैन करने में सक्षम नहीं लगता। मैंने नीचे पाइथन स्क्रिप्ट पोस्ट की है जो वीपीएन पर काम कर सकती है ताकि कई पोर्ट्स को एक पते पर स्कैन किया जा सके।

23
दूसरों के लिए: मैक ओएस एक्स पर नैम मौजूद नहीं है, आप होमब्रॉ brew install nmapया मैकपोर्ट्स के माध्यम से नैम्प स्थापित कर सकते हैं ।
हाईवे ऑफ लाइफ

17
नैपिंग इस कार्य के लिए नैपिंग की तुलना में बेहतर है। नैपिंग नैम्प वितरण का हिस्सा है।
CMCDragonkai

6
मैक OSX में 'नेटवर्क यूटिलिटी' है जिसमें पोर्ट स्कैनर टैब है
शनीमल जूल

191

विशिष्ट पोर्ट के लिए एक टेलनेट सत्र खोलें, उदाहरण के लिए:

# telnet google.com 80
Trying 74.125.226.48...
Connected to google.com.
Escape character is '^]'.

अपना सत्र बंद करने के लिए, Ctrl+ मारा ]


23
netcatकाम भी महान है और कम क्रिया है।
पेट्रस

3
टेलनेट इसके लिए अच्छा काम करता है अगर पोर्ट टीसीपी पोर्ट है।
फाल्कन मोमेंट

6
netcat UDP के साथ भी काम करता है (nc -u)
Tsvetomir Dimitrov

1
Mac उपयोगकर्ताओं के लिए - netcatअब MacOS HighSierra में बनाया गया है, जिसमें HomeBrew से टेलनेट स्थापित किया जा सकता हैbrew install telnet
sandiejat

98
$ nc -vz google.com 80
Connection to google.com 80 port [tcp/http] succeeded!

10
timeजैसे के साथ प्रयोग करें time nc -vz www.example.com 80और आपके पास एक RTT भी होगा।
xebeche

3
एकमात्र समाधान जो किसी भी स्थापना के बिना अमेज़ॅन ईसी 2 उदाहरणों पर काम करता है।
मसाडो

क्या है? rc7 पर ncat 6.40 यह एक अज्ञात विकल्प देता है
Tagar

@ उबंटू संस्करण में मदद के अनुसार, -z शून्य-I / O मोड है, जिसका उपयोग स्कैनिंग के लिए किया जाता है।
बेन मोर्दकै

88

यदि आप पॉवरशेल v4 या नए के साथ विंडोज इंस्टॉलेशन पर हैं, तो आप टेस्ट-नेटकोनेक्शन पॉवरशेल मॉड्यूल का उपयोग कर सकते हैं:

Test-NetConnection <host> -port <port>

उदाहरण: Test-NetConnection example.com -port 80

इस cmdlet में उपनाम भी है tnc। उदाहरण के लिएtnc example.com -port 80


80

आप पैपिंग का उपयोग कर सकते हैं:

http://code.google.com/p/paping

C:\>paping.exe www.google.com -p 80 -c 4
paping v1.5.1 - Copyright (c) 2010 Mike Lovell

Connecting to www.l.google.com [209.85.225.147] on TCP 80:

Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=25.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80

Connection statistics:
        Attempted = 4, Connected = 4, Failed = 0 (0.00%)
Approximate connection times:
        Minimum = 24.00ms, Maximum = 25.00ms, Average = 24.25ms

1
या आप पपिंग के बजाय रोने का उपयोग कर सकते हैं जो बहुत लंबे समय तक रहा है और कुछ सेवाओं के साथ-साथ बंदरगाहों की पिंगिंग का समर्थन करता है।

क्या इसका उपयोग किसी भी पोर्ट या सिर्फ 80 के लिए किया जा सकता है?
ल्यूक पुप्लेट

@LukePuplett केवल उदाहरण में संख्या 80 को बदलते हैं। इसे paping.exe टाइप करके चलाएं। <hostname / IP> -p <portnumber> -c <प्रयासों की संख्या>
डेविड कोस्टा

यह बहुत अच्छा काम करता है। -c *निरंतर पैपिंग (?) के लिए उपयोग करें ।
user2924019


26

curlकमांड का प्रयास करें , जैसे:

$ curl host:port

उदाहरण के लिए:

$ curl -s localhost:80 >/dev/null && echo Success. || echo Fail.
Success.

उपरोक्त आदेश गैर-शून्य निकास स्थिति कोड पर विफल हो जाएगा । कुछ विशेष मामलों में, जैसे कि खाली या विकृत प्रतिक्रिया (देखें man curl), आप सफल के रूप में विशिष्ट निकास कोड को संभालना चाह सकते हैं, इसलिए कृपया अधिक विस्तृत विवरण के लिए इस पोस्ट को देखें।


3
मुझे यह पसंद है क्योंकि curlसेंटोस पर डिफ़ॉल्ट रूप से मौजूद है, इसलिए मुझे कुछ भी स्थापित करने की आवश्यकता नहीं है।
bdemarest

कर्ल ने एक रास्पबेरी पाई (डिस्ट्रो रास्पियन) पर काम किया
जॉन एम

1
यह अब तक का सबसे सुरुचिपूर्ण और सार्वभौमिक समाधान है। मैंने इसे थोड़ा साफ बनाने के लिए थोड़ा मोड़ दिया:IP="<ip>" ; PORT="<port>" ; curl -s "$IP:$PORT" > /dev/null && echo "Success connecting to $IP on port $PORT." || echo "Failed to connect to $IP on port $PORT."
लेफ्टी जी

21

मैंने PsPing का उपयोग करके एक सरल समाधान पाया:

psping 192.168.2.2:5000

यह विंडोज Sysinternals का हिस्सा है ।

PsPing पिंग कार्यक्षमता, टीसीपी पिंग, विलंबता और बैंडविड्थ माप लागू करता है।


1
इसके अलावा PsPing Microsoft SysInternal टीम से आता है इसलिए अन्य Microsoft उन्मुख लोगों के साथ काम करते समय इसे थोड़ा अधिक वैध माना जा सकता है। (और बहुत पुराने पोर्टक्री की तुलना में बेहतर कार्यक्षमता है)
मार्टिविस

कस्टम पोर्ट का उपयोग करते समय पीएसपींग में विलंबता माप प्रदान करने का लाभ होता है, कुछ ऐसा जो टेस्ट-नेटकनेक्शन नहीं कर सकता है (यह केवल आईसीएमपी प्रतिक्रिया समय की रिपोर्ट करता है)।
जेफ मील्स

14

लिनक्स पर आप एचपीपी का उपयोग कर सकते हैं लेकिन यह आईसीएमपी के बजाय टीसीपी का उपयोग करता है।

hping example.com -S -V -p 80

1
hping (मेरे ubuntu में hping3) उत्कृष्ट है। यह समय-समय पर जांच को दोहराता है जैसे पिंग करता है, और यहां सुझाए गए कई टूल के विपरीत है। यह भी दोनों का परीक्षण करता है कि क्या पैकेट के माध्यम से मिलता है, और क्या पोर्ट खुला है। यदि यह खुला है तो आपको मिलेगा flags=SA(यानी SYN ACK), और यदि यह बंद है तो आपको मिलता है flags=SR(यानी SYN RST)। ध्यान दें कि शायद आपको -Vयहां ध्वज की आवश्यकता नहीं है, लेकिन आपको हिंग चलाने के लिए sudo / root की आवश्यकता है।
mc0e

अति उत्कृष्ट! कई अन्य उत्तरों के विपरीत, यह RTT विलंबता की सूचना देता है pingऔर रुक जाता है।
एडवर्ड एंडरसन

11

पिंग बहुत विशिष्ट है, लेकिन यदि आप जांचना चाहते हैं कि पोर्ट खुला है या नहीं, और विंडोज बॉक्स चला रहा है तो पोर्टक्री आपका मित्र है।

मैंने इसका उपयोग केवल कनेक्टिविटी समस्याओं के लिए डोमेन नियंत्रकों के परीक्षण के लिए किया है, लेकिन इसने इसके लिए एक उपचार का काम किया है, इसलिए आपको इसके लिए काम करना चाहिए।


1
PortQry को मूल रूप से MS Exchange टीम द्वारा 1999/2000 में जारी किया गया था, लेकिन MS हालिया संस्करण ने रिमोट पोर्ट्स (स्वास्थ्य और सुरक्षा) को क्वेरी करने की क्षमता को हटाकर इसका मंचन किया है।
ल्यूक पुप्लेट

8

यहाँ एक त्वरित और गंदा .NET कंसोल ऐप है:

    static void Main(string[] args)
    {
        string addressArgument = null, portArgument = null;

        System.Net.Sockets.TcpClient tcpClient = null;

        try
        {
            addressArgument = args[0];
            portArgument = args[1];

            int portNumber;
            portNumber = Int32.Parse(portArgument);

            tcpClient = new System.Net.Sockets.TcpClient();
            tcpClient.ReceiveTimeout = tcpClient.SendTimeout = 2000;


            IPAddress address;
            if (IPAddress.TryParse(args[0], out address))
            {
                var endPoint = new System.Net.IPEndPoint(address, portNumber);
                tcpClient.Connect(endPoint);
            }
            else
            {
                tcpClient.Connect(addressArgument, portNumber);
            }

            Console.WriteLine("Port {0} is listening.", portArgument);
        }
        catch (Exception e)
        {
            if (e is SocketException || e is TimeoutException)
            {
                Console.WriteLine("Not listening on port {0}.", portArgument);
            }
            else
            {
                Console.WriteLine("Usage:");
                Console.WriteLine("    portquery [host|ip] [port]");
            }
        }
        finally
        {
            if (tcpClient != null)
                tcpClient.Close();
        }
    }

5

नहीं।

इस बात की कोई गारंटी नहीं है कि पोर्ट पर चलने वाली सेवा पिंग को समझती है। यह इस सवाल को भी खोलता है कि आप पोर्ट, टीसीपी या यूडीपी के लिए क्या "स्वाद" चाहते हैं? चूंकि पिंग "प्रोटोकॉल" न तो उपयोग करता है ( आईसीएमपी का उपयोग करके पिंग लागू किया जाता है ), यह बहुत मायने नहीं रखता है।


4

मुझे पूरा यकीन है कि Nagios check_tcp जांच वही करता है जो आप चाहते हैं। वे यहां पाए जा सकते हैं और हालांकि एक नागिओस संदर्भ में उपयोग किए जाने के लिए डिज़ाइन किया गया है, वे सभी स्टैंडअलोन कार्यक्रम हैं।

$ ./check_tcp -H host -p 22
TCP OK - 0.010 second response time on port 22|time=0.009946s;0.000000;0.000000;0.000000;10.000000

4

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

नीचे दिए गए उदाहरण से पता चलता है कि वीपीएन पर कौन से आईपी में वीएनसी / पोर्ट 5900 खुले हैं जो विंडोज 7 पर चल रहे क्लाइंट के साथ हैं।

IP और पोर्ट की दी गई सूची को स्कैन करने के लिए एक छोटा पायथन (v2.6.6) स्क्रिप्ट:

from socket import *

fTimeOutSec = 5.0
sNetworkAddress = '192.168.1'
aiHostAddresses = range(1,255)
aiPorts = [5900]

setdefaulttimeout(fTimeOutSec)
print "Starting Scan..."
for h in aiHostAddresses:
    for p in aiPorts:
        s = socket(AF_INET, SOCK_STREAM)
        address = ('%s.%d' % (sNetworkAddress, h))
        result = s.connect_ex((address,p))
        if ( 0 == result ):
            print "%s:%d - OPEN" % (address,p)
        elif ( 10035 == result ):
            #do nothing, was a timeout, probably host doesn't exist
            pass
        else:
            print "%s:%d - closed (%d)" % (address,p,result)

        s.close()
print "Scan Completed."

परिणाम इस तरह दिखे:

Starting Scan...
192.168.1.1:5900 - closed (10061)
192.168.1.7:5900 - closed (10061)
192.168.1.170:5900 - OPEN
192.168.1.170:5900 - closed (10061)
Scan Completed.

शीर्ष पर मौजूद चार चर को समय-समय, नेटवर्क, मेजबानों और उन बंदरगाहों के लिए उपयुक्त रूप से बदलना होगा, जिनकी आवश्यकता है। मेरे वीपीएन पर 5.0 सेकंड लगातार ठीक से काम करने के लिए पर्याप्त लग रहा था, कम (हमेशा) सटीक परिणाम नहीं देता था। मेरे स्थानीय नेटवर्क पर, 0.5 पर्याप्त से अधिक था।


2
बंद पोर्ट के निदान के लिए विन 7 एक्सपी प्रो क्लाइंट / विन सर्वर 2008 आर 2 पर पूरी तरह से काम करता है। (मुझे एक 30 सेकंड टाइमआउट थ्रेशोल्ड का उपयोग करना था लेकिन यह विशिष्ट सर्वर वातावरण के साथ एक मुद्दा हो सकता है कि इस कोड के साथ कोई समस्या नहीं है)
डेविड ज़ेमेंस


1

बाश शेल में, आप टीसीपी छद्म डिवाइस फ़ाइल का उपयोग कर सकते हैं , उदाहरण के लिए:

</dev/tcp/serverfault.com/80 && echo Port open || echo Port closed

यहाँ 1 सेकंड का टाइमआउट लागू करने वाला संस्करण है:

timeout 1 bash -c "</dev/tcp/serverfault.com/81" && echo Port open || echo Port closed

0

यदि आप एक "nix ऑपरेटिंग सिस्टम" zenmap "को स्थापित करने और उपयोग करने का प्रयास कर रहे हैं, तो यह nmap के लिए एक GUI है और इसमें कई उपयोगी स्कैन प्रोफाइल हैं जो नए उपयोगकर्ता के लिए बहुत मदद करते हैं।


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