我们在进行服务器配置的时候,经常要查看服务器的某个端口是否已经开放。如果服务器只有一两台的话,那很好办,只需要使用nc命令一个个查看即可。
但是,如果你的服务器是个集群,有很多台呢?那如果还一个个手动去检查的话,效率肯定是无比低下的,年底裁员名单里肯定有你。
在这种情况下,我们完全可以使用 shell 脚本配合 nc 命令来达到我们的目的。而且,不管服务器有几台,需要检查的端口有几个,都可以实现这样的目标。
在本文里,我们用 shell 脚本来实现两个需求:
扫描多台服务器的一个端口是否打开
扫描多台服务器的多个端口是否打开
在开始之前,我们先来了解一下 nc 命令。
nc 命令简介
nc 是英文单词 netcat 的缩写,它是通过使用 tcp 或 udp 的网络协议的连接来读或写数据,可以直接被第三方程序或脚本直接调用。
同时,它是一款功能非常强大的网络调试工具,因为它可以创建几乎所有你所需要的连接方式。
nc 工具主要有三种功能模式:连接模式、监听模式、通道模式。它的一般使用格式如下:
$nc[-options][hostnameorip][portnumber]
接下来,我们就用 shell 脚本结合 nc 命令来实现我们的两个需求。
1. 扫描多台服务器的一个端口是否打开
在这里,我们先把需要查询的所有服务器地址全部放在一个server-list.txt文件里,每个地址单独一行,如下:
#catserver-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 端口是否打开。
#viport_scan.sh
#!/bin/sh
forserverin`moreserver-list.txt`
do
#echo$i
nc-zvw3$server22
done
最后,我们给这个脚本赋予可执行权限即可。
$chmod+xport_scan.sh
之后,我们就可以用这个脚本来自动依次检查多个服务器的 22 端口是否已打开。
#shport_scan.sh
connectionto192.168.1.222port[tcp/ssh]succeeded!
connectionto192.168.1.322port[tcp/ssh]succeeded!
connectionto192.168.1.422port[tcp/ssh]succeeded!
connectionto192.168.1.522port[tcp/ssh]succeeded!
connectionto192.168.1.622port[tcp/ssh]succeeded!
connectionto192.168.1.722port[tcp/ssh]succeeded!
2. 扫描多台服务器的多个端口是否打开
在这里,我们同样把需要查询的所有服务器地址全部放在一个server-list.txt文件里,每个地址单独一行。这里就不重复演示了。
与此同时,我们也把需要查询的服务器端口放在另一个port-list.txt文件里,每个端口单独一行,如下所示:
#catport-list.txt
22
80
然后,我们再用 for 循环依次扫描server-list.txt里对应服务器port-list.txt所列的端口是否打开。注意,这里用到了两个 for 循环,第一层是服务器列表,第二层是端口列表。
#vimultiple_port_scan.sh
#!/bin/sh
forserverin`moreserver-list.txt`
do
forportin`moreport-list.txt`
do
#echo$server
nc-zvw3$server$port
echo""
done
done
最后,我们给这个脚本赋予可执行权限即可。
$chmod+xmultiple_port_scan.sh
之后,我们就可以用这个脚本来自动依次检查多个服务器的多个端口是否已打开。
#shmultiple_port_scan.sh
connectionto192.168.1.222port[tcp/ssh]succeeded!
connectionto192.168.1.280port[tcp/http]succeeded!
connectionto192.168.1.322port[tcp/ssh]succeeded!
connectionto192.168.1.380port[tcp/http]succeeded!
connectionto192.168.1.422port[tcp/ssh]succeeded!
connectionto192.168.1.480port[tcp/http]succeeded!
connectionto192.168.1.522port[tcp/ssh]succeeded!
connectionto192.168.1.580port[tcp/http]succeeded!
connectionto192.168.1.622port[tcp/ssh]succeeded!
connectionto192.168.1.680port[tcp/http]succeeded!
connectionto192.168.1.722port[tcp/ssh]succeeded!
connectionto192.168.1.780port[tcp/http]succeeded!
影响网站关键词排名因素都有哪些Sitemap网站地图标准格式及大小说明福州鼓楼网站设计哪些常见问题要避免香港服务器为什么这么受欢迎网站建设设计和建站的目的两者要并重做网站如何更好的兼顾用户体验「seo排名培训」百度爬虫探讨优化关键词布局合理的规范标网站建设好之后如何维护