在这里只是一个快速的理智检查。
你可以ping一台机器的特定端口,如果是这样,你能提供一个例子吗?
我正在寻找像ping ip address portNum
。
Ping不能ping通端口,因为Ping使用的ICMP没有端口的概念。 端口属于TCP和UDP等传输层协议。 但是,您可以使用nmap来查看端口是否打开
nmap -p 80 example.com
编辑:如flokra提到的,nmap不仅仅是一个ping-for-ports-thingy。 这是安全审计员和黑客最好的朋友,并带有很多很酷的选项。 检查文档中所有可能的标志。
打开到特定端口的Telnet会话,例如:
# telnet google.com 80 Trying 74.125.226.48... Connected to google.com. Escape character is '^]'.
要closures会话,请按Ctrl + ] 。
你可以使用PaPing:
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
$ nc -vz google.com 80 Connection to google.com 80 port [tcp/http] succeeded!
如果您使用的是PowerShell v4或更新版本的Windows安装,则可以使用test-netconnection powershell模块:
Test-NetConnection <host> -port <port>
示例:Test-NetConnection example.com -port 80
此cmdlet也具有别名tnc
。 例如tnc example.com -port 80
不,你不能,因为ping
使用ICMP协议 ,甚至没有端口的概念。
在Linux上,您可以使用hping,但使用TCP而不是ICMP。
hping example.com -S -V -p 80
Ping是非常具体的,但是如果你想检查一个端口是否打开,并且正在运行一个Windows盒子,那么PortQry是你的朋友。
我只用它来testing域控制器的连接性问题,但它的工作,为此,应该为你工作。
尝试curl
命令,如:
$ curl host:port
例如:
$ curl -s localhost:80 >/dev/null && echo Success. || echo Fail. Success.
上述命令将返回一个非零退出状态码的失败 。 在某些特定情况下,如空白或格式错误的响应(请参见man curl
),您可能想要处理特定的退出代码,因此请查看此帖以获取更详细的说明。
我发现使用PsPing更简单的解决scheme:
psping 192.168.2.2:5000
它是Windows Sysinternals的一部分。
PsPing实现Pingfunction,TCP 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(); } }
没有。
不能保证在端口上运行的服务能够理解ping。 这也开放了你想ping,TCP或UDP端口的“味道”的问题? 由于ping协议既不使用(ping使用ICMP实现),也没有多大意义。
我很确定,Nagios的check_tcp探测器是做你想做的。 他们可以在这里find,虽然devise用于在Nagios上下文,他们都是独立的程序。
$ ./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
这是唯一的解决scheme适用于客户端机器为Windows Vista或Windows 7的VPN ,因为其他列出的答案根本不起作用。 这个答案以前被删除,不应该是,因为这是一个现实世界常见的情况下唯一的解决scheme。 由于没有可用的删除呼吁,我转发它来拯救其他人,我试图使用其他答案的挫折。
下面的示例查找VPN上具有VNC /端口5900的哪些IP与运行在Windows 7上的客户端打开。
一个简短的Python(v2.6.6)脚本来扫描给定的IP和端口列表:
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.
顶部的四个variables需要更改为适合所需的超时,networking,主机和端口。 在我的VPN 5.0秒似乎足以一贯正常工作,less(没有总是)给出准确的结果。 在我的本地networking上,0.5是绰绰有余的。
有一个轻量级的工具,称为tcping: http : //www.linuxco.de/tcping/tcping.html
在Bash shell中,可以使用TCP 伪设备文件 ,例如:
</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,并且有几个有用的扫描configuration文件,对新用户有很大的帮助。
我感觉幸运的谷歌“ping特定的端口”: http : //philwilks.blogspot.com/2008/01/ping-specific-port.html ,所以不,你不能ping一个特定的端口
你可以使用nmap: nmap -p <port> <host>