新服务器连通性 暴露端口查看 netcat + shell

267 阅读2分钟

1 下载nc rpm 包 下载地址:rpmfind.net/linux/rpm2h…

2 找到对应的操作系统的NC包如: nc-1.84-24.el6.x86_64.rpm

3 上传到操作系统 4 执行安装: rpm -ivh nc-1.84-24.el6.x86_64.rpm

5 验证: nc -help

或 nc -l 8888

第二部分 zhuanlan.zhihu.com/p/65633603

如何使用 Shell 脚本来查看多个服务器的端口是否打开?

我们在进行服务器配置的时候,经常要查看服务器的某个端口是否已经开放。如果服务器只有一两台的话,那很好办,只需要使用 nc 命令一个个查看即可。

但是,如果你的服务器是个集群,有很多台呢?那如果还一个个手动去检查的话,效率肯定是无比低下的,年底裁员名单里肯定有你。

在这种情况下,我们完全可以使用 Shell 脚本配合 nc 命令来达到我们的目的。而且,不管服务器有几台,需要检查的端口有几个,都可以实现这样的目标。

在本文里,我们用 Shell 脚本来实现两个需求:

扫描多台服务器的一个端口是否打开 扫描多台服务器的多个端口是否打开 在开始之前,我们先来了解一下 nc 命令。

$ nc [-options] [HostName or IP] [PortNumber] 接下来,我们就用 Shell 脚本结合 nc 命令来实现我们的两个需求。

  1. 扫描多台服务器的一个端口是否打开 在这里,我们先把需要查询的所有服务器地址全部放在一个 server-list.txt 文件里,每个地址单独一行,如下:

cat server-list.txt

192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 192.168.1.6 192.168.1.7 然后,我们再用 for 循环依次扫描 server-list.txt 里对应服务器的端口是否打开。在这里,我们扫描 22 端口是否打开。

vi port_scan.sh

#!/bin/sh for server in more server-list.txt do #echo i
nc -zvw3server 22 done 最后,我们给这个脚本赋予可执行权限即可。

$ chmod +x port_scan.sh 之后,我们就可以用这个脚本来自动依次检查多个服务器的 22 端口是否已打开。

sh port_scan.sh

Connection to 192.168.1.2 22 port [tcp/ssh] succeeded! Connection to 192.168.1.3 22 port [tcp/ssh] succeeded! Connection to 192.168.1.4 22 port [tcp/ssh] succeeded! Connection to 192.168.1.5 22 port [tcp/ssh] succeeded! Connection to 192.168.1.6 22 port [tcp/ssh] succeeded! Connection to 192.168.1.7 22 port [tcp/ssh] succeeded! 2. 扫描多台服务器的多个端口是否打开 在这里,我们同样把需要查询的所有服务器地址全部放在一个 server-list.txt 文件里,每个地址单独一行。这里就不重复演示了。

与此同时,我们也把需要查询的服务器端口放在另一个 port-list.txt 文件里,每个端口单独一行,如下所示:

cat port-list.txt

22 80 然后,我们再用 for 循环依次扫描 server-list.txt 里对应服务器 port-list.txt 所列的端口是否打开。注意,这里用到了两个 for 循环,第一层是服务器列表,第二层是端口列表。

vi multiple_port_scan.sh

#!/bin/sh for server in more server-list.txt do for port in more port-list.txt do #echo server
nc -zvw3server $port echo "" done done 最后,我们给这个脚本赋予可执行权限即可。

$ chmod +x multiple_port_scan.sh 之后,我们就可以用这个脚本来自动依次检查多个服务器的多个端口是否已打开。

sh multiple_port_scan.sh

Connection to 192.168.1.2 22 port [tcp/ssh] succeeded! Connection to 192.168.1.2 80 port [tcp/http] succeeded!

Connection to 192.168.1.3 22 port [tcp/ssh] succeeded! Connection to 192.168.1.3 80 port [tcp/http] succeeded!

Connection to 192.168.1.4 22 port [tcp/ssh] succeeded! Connection to 192.168.1.4 80 port [tcp/http] succeeded!

Connection to 192.168.1.5 22 port [tcp/ssh] succeeded! Connection to 192.168.1.5 80 port [tcp/http] succeeded!

Connection to 192.168.1.6 22 port [tcp/ssh] succeeded! Connection to 192.168.1.6 80 port [tcp/http] succeeded!

Connection to 192.168.1.7 22 port [tcp/ssh] succeeded! Connection to 192.168.1.7 80 port [tcp/http] succeeded!

  1. 目标服务器起一个进程占用端口 Linux最简单HTTP Server / File Server汇总 www.jianshu.com/p/49900e4cd…

Python 2.x $ python -m SimpleHTTPServer 8000

Python 3.x $ python -m http.server 8000