提交 0f0dd65d authored 作者: 陈泽健's avatar 陈泽健

feat(exapi-check): 添加防火墙关闭和docker重启功能

- 在需求文档中添加防火墙关闭步骤和相关命令说明
- 更新执行流程文档增加防火墙关闭章节和流程图
- 修改状态跟踪表格标记已完成步骤并添加防火墙关闭待办项
- 在exapicheck.sh脚本中实现close_firewall_port函数处理8996端口关闭
- 在exapicheck.sh脚本中实现restart_docker函数处理docker服务重启
- 在配置应用后自动执行防火墙关闭和docker重启操作
- 添加相应的日志记录和用户确认提示机制
上级 63e8ae2d
......@@ -227,6 +227,89 @@ rollback_config() {
fi
}
#===============================================================================
# 关闭8996防火墙
#===============================================================================
close_firewall_port() {
log_info "关闭8996端口防火墙..."
# 检查firewalld是否运行
if ! systemctl is-active --quiet firewalld; then
log_warn "firewalld服务未运行,跳过防火墙配置"
return 0
fi
# 移除8996端口
log_info "执行: firewall-cmd --permanent --remove-port=8996/tcp"
if firewall-cmd --permanent --remove-port=8996/tcp >> "$LOG_FILE" 2>&1; then
log_info "8996端口移除成功"
else
log_warn "8996端口移除失败(可能端口未开放)"
fi
# 重载防火墙配置
log_info "执行: firewall-cmd --reload"
if firewall-cmd --reload >> "$LOG_FILE" 2>&1; then
log_info "防火墙重载成功"
else
log_error "防火墙重载失败"
return 1
fi
# 验证端口是否已关闭
log_info "执行: firewall-cmd --list-ports"
local port_list=$(firewall-cmd --list-ports 2>/dev/null)
echo "$port_list" >> "$LOG_FILE"
if echo "$port_list" | grep -q "8996/tcp"; then
log_error "8996端口仍然开放"
return 1
else
log_info "8996端口已关闭"
fi
return 0
}
#===============================================================================
# 重启docker容器
#===============================================================================
restart_docker() {
log_warn "重启docker服务(将影响所有运行容器)..."
# 询问用户确认
echo ""
read -p "是否确认重启docker? (y/n): " confirm
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
log_warn "用户取消重启docker"
return 1
fi
if systemctl restart docker >> "$LOG_FILE" 2>&1; then
log_info "docker服务重启成功"
# 等待容器启动
log_info "等待容器启动(10秒)..."
sleep 10
# 检查ujava容器是否运行
local container=$(get_ujava_container)
if [ $? -eq 0 ]; then
log_info "ujava容器已启动: $container"
echo "$container"
return 0
else
log_error "ujava容器未启动"
return 1
fi
else
log_error "docker服务重启失败"
return 1
fi
}
#===============================================================================
# 验证配置是否生效
#===============================================================================
......@@ -354,6 +437,23 @@ main() {
echo ""
log_info "nginx配置已成功添加并重载"
# 关闭8996防火墙
echo ""
close_firewall_port
if [ $? -ne 0 ]; then
log_warn "防火墙关闭失败,请手动检查"
fi
# 重启docker容器
echo ""
local ujava_container=$(restart_docker)
if [ $? -ne 0 ]; then
log_warn "docker重启失败或用户取消,尝试使用原容器ID验证"
# 使用之前的容器ID继续验证
fi
echo ""
# 验证配置
verify_config
......
......@@ -42,6 +42,12 @@
- **说明**:需执行以下两个验证命令,确保不同端口和路径的swagger访问均被拦截。
- 执行:`curl -k -v http://192.168.52.62:8996/swagger-ui.html` 查看是否正确返回403页面。
- 执行:`curl -k -v https://192.168.52.62/exapi/swagger-ui.html` 查看是否正确返回403页面。
- 防火墙关闭:
- **说明**:需执行以下命令,关闭8996防火墙。
- 执行:`sudo firewall-cmd --permanent --remove-port=8996/tcp`
- 执行:`sudo firewall-cmd --reload`
- 执行:`sudo firewall-cmd --list-ports`进行验证是否已关闭8996。
- 执行:`sudo systemctl restart docker`重启容器即可。
- 日志打印:
- 实时日志打印,每一步骤都需要打印,日志文件可以存放在当前脚本所在目录下。
......
......@@ -34,7 +34,14 @@
- 执行: `curl -k -v https://192.168.52.62/exapi/swagger-ui.html`
- 验证是否正确返回403页面
#### 2.6 日志记录
#### 2.6 防火墙关闭
- **说明**:关闭8996端口防火墙,确保端口不可直接访问
- 执行: `sudo firewall-cmd --permanent --remove-port=8996/tcp`
- 执行: `sudo firewall-cmd --reload`
- 执行: `sudo firewall-cmd --list-ports` 验证8996端口是否已关闭
- 执行: `sudo systemctl restart docker` 重启容器
#### 2.7 日志记录
- 实时日志打印
- 日志文件存放在脚本所在目录
......@@ -66,6 +73,10 @@ location ~* ^/exapi/(swagger-ui|doc\.html|swagger-resources|v2/api-docs|v3/api-d
↓ ↓
去除新增配置 执行nginx reload
返回false ↓
关闭8996防火墙
重启docker容器
执行curl验证
检查返回403
......@@ -77,13 +88,14 @@ location ~* ^/exapi/(swagger-ui|doc\.html|swagger-resources|v2/api-docs|v3/api-d
| 步骤 | 状态 | 说明 |
|------|------|------|
| 脚本创建 | [ ] | 待实施 |
| 配置检查 | [ ] | 待实施 |
| 配置添加 | [ ] | 待实施 |
| nginx测试 | [ ] | 待实施 |
| nginx重载 | [ ] | 待实施 |
| 配置验证 | [ ] | 待实施 |
| 日志记录 | [ ] | 待实施 |
| 脚本创建 | [x] | 已创建 |
| 配置检查 | [x] | 已实现 |
| 配置添加 | [x] | 已实现 |
| nginx测试 | [x] | 已实现 |
| nginx重载 | [x] | 已实现 |
| 配置验证 | [x] | 已实现 |
| 防火墙关闭 | [ ] | 待补充 |
| 日志记录 | [x] | 已实现 |
### 6. 注意事项
......@@ -91,3 +103,5 @@ location ~* ^/exapi/(swagger-ui|doc\.html|swagger-resources|v2/api-docs|v3/api-d
2. 需要两个验证命令,确保不同端口和路径的swagger访问均被拦截
3. 失败时需要自动回滚配置
4. 所有步骤需要输出日志
5. 防火墙关闭需要root权限,使用sudo执行
6. 重启docker会影响所有运行的容器
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论