linux-如何使Netcat返回未使用的端口

我尝试使用此命令来查找未使用的端口.我想要做的是在一系列端口上运行netcat,找到未运行服务的端口,grep输出这些行的第一行,然后使用sed仅输出端口号.

nc -z <my url> 5000-5010 | grep -m 1 succeeded | sed 's/[^0-9]//g'

但是,当我尝试使用返回的端口启动服务时,会收到一条消息,指出该端口当前正在使用中.

我发现netcat成功意味着该端口上正在运行服务,但是当我尝试这样做时

nc -zv <my url> 5000-5010 | grep -m 1 failed | sed 's/[^0-9]//g'

即使输出的大多数行都包含失败字样,我也一无所获.

浏览手册页后发现,netcat -z仅返回成功结果的输出,尽管为什么在终端窗口上逐行显示失败的连接仍然不可行.

如何使用netcat查看连接失败的第一个端口?

解决方法:

nc -v命令根据标准错误而不是标准输出写入失败/成功的消息.您可以使用2& 1将stderr重定向到stdout.

nc -zv <my url> 5000-5010 2>&1 | grep -m 1 failed

获得失败的电话.

查看http://www.cyberciti.biz/faq/redirecting-stderr-to-stdout/

顺便说一句,我建议您使用awk从输出行获取端口号:

nc -zv <my url> 5000-5010 2>&1 | grep -m 1 failed | awk '{print $6}'

在输出行的第6列中打印值.

上一篇:netcat 命令学习


下一篇:Android Studio点击空白处收起软键盘