我需要一个可以检查远程主机上的端口状态的命令行 . 我试过 ping xxx.xxx.xxx.xxx:161
,但它并没有看到任何地方,并认为ping可能会这样做,但必须有各种版本的ping,我想因为我这样做的服务器没有显示该选项 .
只是为了笑,我尝试从网站上进行基于Web的远程端口检查 - 结果对于“问题”服务器和正确的服务器都是正确的 . 但是,我不能在批量运行中使用它,其中包含500个服务器IP .
有什么我可以做的很简单吗?我的Perl技能非常生疏(使用它或丢失它),除了批处理之外不知道任何其他基于Windows的语言 . Unix是我的技能,但必须从Widows Server 2003执行 .
8 回答
按Windows R键入
cmd
并按Enter键在命令提示符下键入
如果端口未打开,将显示以下消息:
否则你将进入打开的端口(将显示空屏幕)
出于脚本目的,我发现
curl
命令可以做到这一点,例如:可能它不适用于所有服务,因为
curl
在某些情况下可以返回不同的错误代码(根据注释),因此添加以下条件可以以可靠的方式工作:注意:添加了-m5以将最大连接超时设置为5秒 .
如果您还想检查主机是否有效,您还需要检查
6
退出代码:要对返回的错误代码进行故障排除,只需运行:
curl host:port
,例如:有关退出代码的完整列表,请参阅:
man curl
.nc或'netcat'也具有可能有用的扫描模式 .
在命令提示符中,您可以使用命令telnet ..例如,要使用端口80连接到IP 192.168.10.1,
在Windows 7及更高版本click中启用telnet . 从链接文章中,通过控制面板启用telnet - >程序和功能 - > Windows功能 - > telnet客户端,或者只需在管理员提示符中运行:
使用nc命令,
您也可以使用telnet命令
在Bash中,您可以使用伪设备文件,这些文件可以打开与关联套接字的TCP连接 . 语法是
/dev/$tcp_udp/$host_ip/$port
.以下是测试Memcached是否正在运行的简单示例:
这是另一个测试,看看是否可以访问特定的网站:
有关详细信息,请检查:Advanced Bash-Scripting Guide: Chapter 29. /dev and /proc .
相关:Test if a port on a remote system is reachable (without telnet)在SuperUser .
有关更多示例,请参阅:How to open a TCP/UDP socket in a bash shell(文章) .
您似乎正在寻找端口扫描程序,例如nmap或netcat,这两种扫描程序都可用于Windows,Linux和Mac OS X.
例如,检查已知ip上的telnet:
例如,在host.example.com上查找20到30的开放端口:
我想你正在寻找拥有Windows版本的Hping(http://www.hping.org/) .
如果您想要查看TCP端口被阻止的路径(如防火墙),ICMP可能不在哪里,这也非常有用 .