目录
一、背景
1、系统监控和健康检查
2、安全性评估
3、故障排查
4、合规性检查
5、资源管理
6、服务依赖性检查
二、需求和分析
1、需求
2、分析
三、脚本文件
1. 创建脚本文件
2. 编写脚本代码
3、代码解释
(1)定义要检查的端口列表
(2)遍历端口列表
(3)检查端口是否正在监听
(4)输出检测结果
四、脚本执行
1. 给脚本执行权限
2. 运行脚本
3、运行效果
一、背景
在linux系统的运维中,我们需要通过查看一些服务的端口更好的进行系统维护,包括:
1、系统监控和健康检查
(1)确保关键服务(如HTTP、HTTPS、SSH等)正在运行,这对于维护系统的可用性和可靠性至关重要。
(2)监控服务的状态,如果服务端口未监听,可能表明服务崩溃或配置错误。
2、安全性评估
(1)确认不需要的服务端口没有被监听,以减少潜在的攻击面。
(2)检测未经授权的服务,这可能表明系统被入侵。
3、故障排查
(1)当服务无法正常工作时,检查端口监听状态可以帮助确定问题所在,比如网络配置问题或服务未启动。
(2)帮助网络管理员确定网络连接问题是否由于端口被防火墙阻止。
4、合规性检查
在需要遵守特定安全标准的环境中,检查端口监听状态可以确保系统符合规定的安全要求。
5、资源管理
(1)确定哪些端口正在使用,以避免端口冲突。
(2)评估系统资源的使用情况,比如确定是否需要增加更多硬件资源。
6、服务依赖性检查
确认依赖服务(例如数据库服务)正在运行,以便其他应用程序可以正常工作
二、需求和分析
1、需求
根据上一章节提到的,我们知道在很多情况下都需要了解服务端口的状态,因此我们需要在Linux中编写一个bash脚本,来检查一些特定的服务端口是否处于监听状态。
2、分析
可以使用netstat命令来实现上述需求。
netstat 是一个在类Unix系统中广泛使用的命令行工具,用于显示网络连接、路由表、接口统计信息、伪装连接以及多播成员资格等信息。
netstat 命令提供了丰富的选项,可以用来诊断网络问题,监控网络连接,以及检查系统的网络配置。
三、脚本文件
1. 创建脚本文件
nano check_servers_ports.sh
2. 编写脚本代码
编写脚本代码内容如下:
#!/bin/bash
# 定义要检查的端口列表
ports=(443 6379 80 8083 8081 5040)
# 遍历端口列表
for port in "${ports[@]}"; do
# 检查端口是否正在监听
if netstat -tuln | grep -q ":$port"; then
echo "Port $port is listening."
else
echo "Port $port is NOT listening."
fi
done
3、代码解释
(1)定义要检查的端口列表
ports=(443 6379 80 8083 8081 5040)
- 这行代码定义了一个名为 ports 的数组,包含了需要检查是否处于监听状态的端口号。
(2)遍历端口列表
for port in "${ports[@]}"; do
- 这里使用 for 循环遍历 ports 数组中的每个元素。${ports[@]} 是一个扩展的参数展开,它会将数组 ports 中的每个元素分别作为循环的迭代变量 port。
(3)检查端口是否正在监听
if netstat -tuln | grep -q ":$port"; then
- 在 for 循环内部,这条 if 语句用来检查当前迭代的端口 port 是否处于监听状态。netstat -tuln 命令会列出所有处于监听状态的 TCP 和 UDP 端口,而不解析主机名和端口号。| 是管道操作符,它将 netstat 的输出传递给 grep -q ":$port" 命令。-q 选项告诉 grep 静默运行,如果找到了匹配的行,grep 将返回 0(成功)的退出状态,从而触发 if 语句的条件。
(4)输出检测结果
echo "Port $port is listening."
- 如果 grep 命令找到了与端口匹配的行(即端口正在监听),则执行这个 echo 命令,打印出端口正在监听的信息。
else
echo "Port $port is NOT listening."
fi
- 如果 grep 命令没有找到与端口匹配的行(即端口没有在监听),则执行这个 else 分支中的 echo 命令,打印出端口没有在监听的信息。
四、脚本执行
1. 给脚本执行权限
使用如下命令:
chmod +x check_servers_ports.sh
2. 运行脚本
使用如下命令:
sh check_servers_ports.sh
3、运行效果
运行脚本命令,结果如下图所示:
文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。