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

 更新时间:2020年06月16日 08:46:33   作者:良许Linux  
这篇文章主要介绍了如何使用 Shell 脚本来查看多个服务器的端口是否打开的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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

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

在这种情况下,我们完全可以使用 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
nc -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
nc -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!

总结

到此这篇关于使用 Shell 脚本来查看多个服务器的端口是否打开的方法的文章就介绍到这了,更多相关 Shell 脚本查看多个服务器的端口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • spring使用@Async注解导致循环依赖问题异常的排查记录

    spring使用@Async注解导致循环依赖问题异常的排查记录

    这篇文章主要介绍了spring使用@Async注解导致循环依赖问题异常的排查记录,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 浅谈Java获得多线程的返回结果方式(3种)

    浅谈Java获得多线程的返回结果方式(3种)

    这篇文章主要介绍了浅谈Java获得多线程的返回结果方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • java图论普利姆及克鲁斯卡算法解决最小生成树问题详解

    java图论普利姆及克鲁斯卡算法解决最小生成树问题详解

    这篇文章主要为大家介绍了java图论普利姆算法及克鲁斯卡算法解决最小生成树问题的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • Java利用Map实现计算文本中字符个数

    Java利用Map实现计算文本中字符个数

    这篇文章主要为大家详细介绍了Java如何利用Map集合实现计算文本中字符个数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-08-08
  • Spring P标签的使用详解

    Spring P标签的使用详解

    这篇文章主要介绍了Spring P标签的使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • idea 开发神器之idea插件汇总

    idea 开发神器之idea插件汇总

    这篇文章主要介绍了idea 开发神器之idea插件汇总,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Java中内核线程理论及实例详解

    Java中内核线程理论及实例详解

    在本篇文章里小编给大家整理了一篇关于Java中内核线程理论及实例详解内容,有兴趣的朋友们可以学习下。
    2021-03-03
  • 详解如何在低版本的Spring中快速实现类似自动配置的功能

    详解如何在低版本的Spring中快速实现类似自动配置的功能

    这篇文章主要介绍了详解如何在低版本的Spring中快速实现类似自动配置的功能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • java实现文件归档和还原

    java实现文件归档和还原

    这篇文章主要为大家详细介绍了java实现文件归档和还原,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • mybatis,foreach,找不到参数报错问题及解决

    mybatis,foreach,找不到参数报错问题及解决

    这篇文章主要介绍了mybatis,foreach,找不到参数报错问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03

最新评论