【发布时间】:2011-08-29 02:33:59
【问题描述】:
好的,我们都知道如何使用 PING 来测试与 IP 地址的连接性。我需要做的是类似的事情,但测试我对给定 IP 地址和特定端口(在本例中为 1775)的出站请求是否成功。最好从命令提示符执行测试。
【问题讨论】:
-
哦,请接受您未解决的问题的一些答案。
-
在 ubuntu/mac 中远程登录 {IP} {PORT}
标签: ip
好的,我们都知道如何使用 PING 来测试与 IP 地址的连接性。我需要做的是类似的事情,但测试我对给定 IP 地址和特定端口(在本例中为 1775)的出站请求是否成功。最好从命令提示符执行测试。
【问题讨论】:
标签: ip
【讨论】:
如果目标 IP/端口上有服务器运行,您可以使用 Telnet。除了“无法连接”之外的任何响应都表明您能够连接。
【讨论】:
为了自动化令人敬畏的服务 portquiz.net,我确实编写了一个 bash 脚本:
NB_CONNECTION=10
PORT_START=1
PORT_END=1000
for (( i=$PORT_START; i<=$PORT_END; i=i+NB_CONNECTION ))
do
iEnd=$((i + NB_CONNECTION))
for (( j=$i; j<$iEnd; j++ ))
do
#(curl --connect-timeout 1 "portquiz.net:$j" &> /dev/null && echo "> $j") &
(nc -w 1 -z portquiz.net "$j" &> /dev/null && echo "> $j") &
done
wait
done
【讨论】:
如果您正在测试 TCP/IP,测试远程地址/端口的一种廉价方法是远程登录到它并查看它是否连接。对于 HTTP(端口 80)等协议,您甚至可以键入 HTTP 命令并获取 HTTP 响应。
例如
Command IP Port
Telnet 192.168.1.1 80
【讨论】:
我发现最快/最有效的方法是使用这里描述的 nmap 和 portquiz.net:http://thomasmullaly.com/2013/04/13/outgoing-port-tester/ 这会扫描到前 1000 个最常用的端口:
# nmap -Pn --top-ports 1000 portquiz.net
Starting Nmap 6.40 ( http://nmap.org ) at 2017-08-02 22:28 CDT
Nmap scan report for portquiz.net (178.33.250.62)
Host is up (0.072s latency).
rDNS record for 178.33.250.62: electron.positon.org
Not shown: 996 closed ports
PORT STATE SERVICE
53/tcp open domain
80/tcp open http
443/tcp open https
8080/tcp open http-proxy
Nmap done: 1 IP address (1 host up) scanned in 4.78 seconds
全部扫描(耗时 6 秒而不是 5 秒):
# nmap -Pn -p1-65535 portquiz.net
【讨论】:
@benjarobin 用于测试端口序列的 bash 脚本示例对我不起作用,因此我创建了这个最小的非单行(命令行)示例,该示例从序列中写入开放端口的输出1-65535(所有适用的通信端口)到本地文件并禁止所有其他输出:
for p in $(seq 1 65535); do curl -s --connect-timeout 1 portquiz.net:$p >> ports.txt; done
不幸的是,这需要 18.2 小时才能运行,因为我的旧版本 curl 允许的最小连接超时整数秒数是 1。如果您的 curl 版本 >=7.32.0(输入“curl -V”) ,您可以尝试更小的十进制值,具体取决于您连接到服务的速度。或者尝试更小的端口范围以最小化持续时间。
此外,它会附加到输出文件 ports.txt,因此如果多次运行,您可能需要先删除该文件。
【讨论】: