检查远程主机上的一个端口的状态[关闭](Check status of one port on re

2019-06-26 14:13发布

我需要一个命令行,可以检查远程主机上的端口状态。 我试过ping xxx.xxx.xxx.xxx:161 ,但它不承认“宿主”。 我认为这是一个“好”的答案,直到我做了同样的命令对我认识的那个端口开放主机。 这是Windows上的批处理文件,将检查远程端口的状态,然后运行使用命令远程端口信息,再然后远程端口检查命令,然后使用该命令的信息,下一台服务器上的端口, 等等。 我到处找,以为平安可能做到这一点,但必须有平的各种版本,我想为我的不显示选项这样的服务器。

只是为了笑,我试图从一个网站一个基于Web的远程端口检查 - ,结果为“问题”服务器和正确的服务器都正确。 但是,我不能使用,在批处理运行在它500+服务器的IP。

有什么我能做到这一点很简单? 我的Perl的技能是非常生疏(使用它或失去它),不知道除了批任何其他基于Windows的语言。 Unix的是我的技能,但是这必须从寡妇Server 2003中执行。

Answer 1:

你似乎在寻找一个端口扫描器,如NMAP或netcat的 ,这两者都是可用于Windows,Linux和Mac OS X.

例如,检查上已知的IP远程登录:

nmap -A 192.168.0.5/32 -p 23

例如,寻找开放的端口从20到30 host.example.com:

nc -z host.example.com 20-30


Answer 2:

在命令提示符下,你可以使用命令远程登录。例如,用80端口连接到IP 192.168.10.1,

telnet 192.168.10.1 80

要在Windows 7及以上的启动telnet 点击 。 从链接的文章,能够通过控制面板的telnet - >程序和功能 - > Windows功能 - > Telnet客户端,或者只是在管理员提示符下运行这样的:

dism /online /Enable-Feature /FeatureName:TelnetClient


Answer 3:

对于脚本的目的,我发现curl命令可以做到这一点,例如:

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

可能也未必不会为所有的服务工作,为curl在某些情况下返回不同的错误代码(如根据注释),因此添加以下条件可以以可靠的方式工作:

[ "$(curl -sm5 localhost:8080 >/dev/null; echo $?)" != 7 ] && echo OK || echo FAIL

注:新增-m5设置为5秒最大连接超时。

如果您还想主机是否是有效的检查,你需要检查6退出代码,以及:

$ curl -m5 foo:123; [ $? != 6 -a $? != 7 ] && echo OK || echo FAIL
curl: (6) Could not resolve host: foo
FAIL

要解决返回的错误代码,只需运行: curl host:port ,例如:

$ curl localhost:80
curl: (7) Failed to connect to localhost port 80: Connection refused

请参阅: man curl的退出代码完整列表。



Answer 4:

Windows + Rcmd输入

在命令提示类型

telnet "machine name/ip" "port number"

如果端口未打开,此消息将显示:

"Connecting To "machine name"...Could not open connection to the host, on port "port number":

否则,你将采取以打开端口(空的屏幕显示)



Answer 5:

使用NC指令,

nc -zv <hostname/ip> <port/port range>

For example,
nc -zv localhost 27017-27019
or
nc -zv localhost 27017

您还可以使用telnet命令

telnet <ip/host> port


Answer 6:

NC或“的netcat”还具有可以是使用的扫描模式。



Answer 7:

我认为你正在寻找Hping( http://www.hping.org/ ),其中有一个Windows版本。

“该接口启发了ping(8)unix命令,但是hping不仅能够发送ICMP回应请求。它支持TCP,UDP,ICMP ......”

如果你想看到沿路径的TCP端口被阻止(比如通过防火墙),其中ICMP可能不是它也是非常有用的。



Answer 8:

在bash中,你可以使用伪设备文件,可以打开一个TCP连接到相关插座。 语法/dev/$tcp_udp/$host_ip/$port

下面是简单的例子来测试的Memcached是否正在运行:

</dev/tcp/localhost/11211 && echo Port open || echo Port closed

这里是另一个测试,看看特定网站进行访问:

$ echo "HEAD / HTTP/1.0" > /dev/tcp/example.com/80 && echo Connection successful.
Connection successful.

欲了解更多信息,请查看: 高级Bash脚本编程指南:第29章/dev/proc

相关: 测试一个远程系统上的端口是可到达的(没有远程登录)在超级用户。

更多的例子,请参阅: 如何在bash shell打开一个TCP / UDP套接字 (条)。



文章来源: Check status of one port on remote host [closed]