जवाबों:
आप पोर्ट को पिंग नहीं कर सकते, क्योंकि पिंग ICMP का उपयोग कर रहा है जिसमें पोर्ट की अवधारणा नहीं है। पोर्ट टीसीपी और यूडीपी जैसे ट्रांसपोर्ट लेयर प्रोटोकॉल से संबंधित हैं । हालाँकि, आप यह देखने के लिए कि क्या पोर्ट खुले हैं या नहीं , नैम्प का उपयोग कर सकते हैं
nmap -p 80 example.com
संपादित करें: जैसा कि फ्लोकरा ने उल्लेख किया है, नैम्प सिर्फ एक पिंग-फॉर-पोर्ट्स-चीज़ से अधिक है। यह सिक्योरिटी ऑडिटर्स और हैकर्स के सबसे अच्छे दोस्त हैं और बहुत सारे अच्छे विकल्पों के साथ आते हैं। सभी संभव झंडे के लिए डॉक्टर की जाँच करें।
-PN
दिए गए पोर्ट का परीक्षण करने से पहले होस्ट डिस्कवरी नैम्प को छोड़ना चाहते हैं ।
nmap windows
) से विंडोज़ पर nmap / can / be इंस्टॉल किया जा सकता है , लेकिन यह VPN पर काम नहीं करता है। PaPing पते की एक श्रृंखला को स्कैन करने में सक्षम नहीं लगता। मैंने नीचे पाइथन स्क्रिप्ट पोस्ट की है जो वीपीएन पर काम कर सकती है ताकि कई पोर्ट्स को एक पते पर स्कैन किया जा सके।
brew install nmap
या मैकपोर्ट्स के माध्यम से नैम्प स्थापित कर सकते हैं ।
विशिष्ट पोर्ट के लिए एक टेलनेट सत्र खोलें, उदाहरण के लिए:
# telnet google.com 80
Trying 74.125.226.48...
Connected to google.com.
Escape character is '^]'.
अपना सत्र बंद करने के लिए, Ctrl+ मारा ]।
netcat
काम भी महान है और कम क्रिया है।
netcat
अब MacOS HighSierra में बनाया गया है, जिसमें HomeBrew से टेलनेट स्थापित किया जा सकता हैbrew install telnet
$ nc -vz google.com 80
Connection to google.com 80 port [tcp/http] succeeded!
time
जैसे के साथ प्रयोग करें time nc -vz www.example.com 80
और आपके पास एक RTT भी होगा।
यदि आप पॉवरशेल v4 या नए के साथ विंडोज इंस्टॉलेशन पर हैं, तो आप टेस्ट-नेटकोनेक्शन पॉवरशेल मॉड्यूल का उपयोग कर सकते हैं:
Test-NetConnection <host> -port <port>
उदाहरण: Test-NetConnection example.com -port 80
इस cmdlet में उपनाम भी है tnc
। उदाहरण के लिएtnc example.com -port 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
-c *
निरंतर पैपिंग (?) के लिए उपयोग करें ।
नहीं, आप नहीं कर सकते, क्योंकि ICMP प्रोटोकॉलping
का उपयोग करता है , जिसमें पोर्ट की अवधारणा भी नहीं है।
curl
कमांड का प्रयास करें , जैसे:
$ curl host:port
उदाहरण के लिए:
$ curl -s localhost:80 >/dev/null && echo Success. || echo Fail.
Success.
उपरोक्त आदेश गैर-शून्य निकास स्थिति कोड पर विफल हो जाएगा । कुछ विशेष मामलों में, जैसे कि खाली या विकृत प्रतिक्रिया (देखें man curl
), आप सफल के रूप में विशिष्ट निकास कोड को संभालना चाह सकते हैं, इसलिए कृपया अधिक विस्तृत विवरण के लिए इस पोस्ट को देखें।
curl
सेंटोस पर डिफ़ॉल्ट रूप से मौजूद है, इसलिए मुझे कुछ भी स्थापित करने की आवश्यकता नहीं है।
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."
मैंने PsPing का उपयोग करके एक सरल समाधान पाया:
psping 192.168.2.2:5000
यह विंडोज Sysinternals का हिस्सा है ।
PsPing पिंग कार्यक्षमता, टीसीपी पिंग, विलंबता और बैंडविड्थ माप लागू करता है।
लिनक्स पर आप एचपीपी का उपयोग कर सकते हैं लेकिन यह आईसीएमपी के बजाय टीसीपी का उपयोग करता है।
hping example.com -S -V -p 80
flags=SA
(यानी SYN ACK), और यदि यह बंद है तो आपको मिलता है flags=SR
(यानी SYN RST)। ध्यान दें कि शायद आपको -V
यहां ध्वज की आवश्यकता नहीं है, लेकिन आपको हिंग चलाने के लिए sudo / root की आवश्यकता है।
ping
और रुक जाता है।
पिंग बहुत विशिष्ट है, लेकिन यदि आप जांचना चाहते हैं कि पोर्ट खुला है या नहीं, और विंडोज बॉक्स चला रहा है तो पोर्टक्री आपका मित्र है।
मैंने इसका उपयोग केवल कनेक्टिविटी समस्याओं के लिए डोमेन नियंत्रकों के परीक्षण के लिए किया है, लेकिन इसने इसके लिए एक उपचार का काम किया है, इसलिए आपको इसके लिए काम करना चाहिए।
यहाँ एक त्वरित और गंदा .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();
}
}
मुझे पूरा यकीन है कि 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
यह एकमात्र समाधान है जो वीपीएन के लिए क्लाइंट मशीन के साथ काम करता है जिसमें विंडोज विस्टा या विंडोज 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 पर्याप्त से अधिक था।
इसके लिए एक लाइटवेग उपकरण है, जिसे tcping कहा जाता है: http://www.linuxco.de/tcping/tcping.html
बाश शेल में, आप टीसीपी छद्म डिवाइस फ़ाइल का उपयोग कर सकते हैं , उदाहरण के लिए:
</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
यदि आप एक "nix ऑपरेटिंग सिस्टम" zenmap "को स्थापित करने और उपयोग करने का प्रयास कर रहे हैं, तो यह nmap के लिए एक GUI है और इसमें कई उपयोगी स्कैन प्रोफाइल हैं जो नए उपयोगकर्ता के लिए बहुत मदद करते हैं।