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

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

可是,若是你的服务器是个集群,有不少台呢?那若是还一个个手动去检查的话,效率确定是无比低下的,年末裁人名单里确定有你。网络

在这种状况下,咱们彻底可使用 Shell 脚本配合 nc 命令来达到咱们的目的。并且,无论服务器有几台,须要检查的端口有几个,均可以实现这样的目标。ssh

在本文里,咱们用 Shell 脚原本实现两个需求:tcp

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

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

在开始以前,咱们先来了解一下 nc 命令。调试

nc 命令简介

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

同时,它是一款功能很是强大的网络调试工具,由于它能够建立几乎全部你所须要的链接方式。server

nc 工具主要有三种功能模式:链接模式、监听模式、通道模式。它的通常使用格式以下:ip

$ 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!

 

 

 

https://mp.weixin.qq.com/s/z3G_Cz4z3S2EICcselU-wA

相关文章
相关标签/搜索