Linux中如何使用Shell 脚本查看多个服务器的端口打开情况?

今天马哥教育要跟大家分享的文章是关于Linux中如何使用Shell 脚本查看多个服务器的端口打开情况?熟悉Linux的小伙伴都知道,我们在进行服务器配置的时候,经常要查看服务器的某个端口是否已经开放。如果服务器只有一两台的话,那很好办,只需要使用 c 命令一个个查看即可。 想要Linux学习Linux入门一定要好好看看这篇文章了,希望对你有帮助!

Linux中如何使用Shell 脚本查看多个服务器的端口打开情况?

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

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

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

· 扫描多台服务器的一个端口是否打开

· 扫描多台服务器的多个端口是否打开

在开始之前,我们先来了解一下 nc 命令。

nc 命令简介

nc 是英文单词 netcat 的缩写,它是通过使用 TCP 或 UDP 的网络协议的连接来读或写数据,可以直接被第三方程序或脚本直接调用。

同时,它是一款功能非常强大的网络调试工具,因为它可以创建几乎所有你所需要的连接方式。

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

c -zvw3 $server 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

c -zvw3 $server $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!

以上就是马哥教育今天为大家分享的关于Linux中如何使用Shell 脚本查看多个服务器的端口打开情况?的文章,希望本篇文章能够对正在从事Linux相关工作的小伙伴们有所帮助。想要了解更多Linux相关知识记得关注马哥教育官网。最后祝愿小伙伴们工作顺利哦!

声明:文章来源于网络,侵删!

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!