用 AI 写 Shell 脚本,执行后系统配置被修改

用AI生成Shell脚本已经成为不少运维同学提速的常用手段,但一个不留神,脚本执行后系统配置被修改,轻则服务异常,重则服务器失联。
如果你也踩过这个坑,或者正准备尝试AI写脚本,下面这套标准流程可以帮你降低风险。

先弄清楚:AI脚本为什么容易搞乱系统配置

很多AI模型训练数据来自公开代码库,包含各种环境下的配置修改逻辑。
如果你直接复制粘贴,很可能遇到:

  • 脚本自动改写 /etc/ssh/sshd_config 等核心文件
  • 修改防火墙规则或SELinux状态
  • 安装预期外的软件包
  • 直接覆盖你的自定义配置

核心问题:AI不理解你当前服务器的具体状态,它只按“常见场景”生成代码。
所以,执行前必须人工审查,执行时要有隔离手段。

执行前的三行命令检查

拿到AI脚本后,不要急着 bash ,先用三条命令快速摸底:

# 查看脚本大概干了什么(去除注释和空行后统计行数)
grep -vE '^\s*#|^\s*$' script.sh | wc -l
# 提取所有写文件的操作,重点关注/etc,/usr,/opt等目录
grep -nE '(>|>>|\|tee|sed -i|cp |mv |chmod|chown|rm)' script.sh
# 检查是否有systemctl restart或reload,这可能导致服务中断
grep -nE '(systemctl|service) (restart|reload)' script.sh

如果发现大量直接操作系统配置文件的命令,建议进入下一节进行沙箱测试。

用Docker或虚拟机做个“替身”测试

零基础用户也可以快速搭建一个安全测试环境:

  1. 使用Docker(推荐):运行一个跟服务器同版本的基础镜像,挂载临时目录测试。
docker run -it --rm -v $(pwd):/work centos:7 bash
cd /work
bash script.sh   # 观察输出,不会影响宿主机
  1. 使用临时虚拟机(如果没有Docker):在VirtualBox或VMWare中快速创建一台同样系统的虚拟机,导入后执行脚本,验证效果。

重点:测试后一定要确认脚本没有意外修改网络配置、用户密码等关键项。
可以在测试容器内执行 diff -r /etc /etc.orig (执行前备份一次 /etc)来对比变动。

执行时的“先备份,后回滚”铁律

真实生产环境无法避免执行时,必须做好备份。
推荐以下三步:

# 1. 备份整个/etc目录(最常用)
tar czf /root/etc-backup-$(date +%Y%m%d%H%M).tar.gz /etc
# 2. 记录当前关键服务状态(用于执行后对比)
systemctl list-units --type=service --state=running > /root/services-before.log
# 3. 用脚本自身生成回滚脚本
# 如果AI脚本里用sed -i修改了配置文件,可以提前用patch -R方式反向生成

执行脚本时加上 bash -x script.sh 2>&1 | tee execute.log ,把每一步输出都保留下来,方便回溯。
如果发现执行后系统配置被修改,可以立刻用备份文件恢复。

遇到配置被改后的标准恢复流程

一旦发现异常,不要慌张,按照优先级操作:

  • 网络配置被改:如果无法SSH,通过带外管理(IPMI/iDRAC)或控制台登录,恢复 /etc/sysconfig/network-scripts/ifcfg-*netplan 配置,然后重启网络服务。
  • SSH端口/认证被改:从控制台登录,检查 /etc/ssh/sshd_config ,还原备份或用原始文件覆盖,执行 systemctl restart sshd
  • 防火墙规则被改:用 iptables-restore < /etc/sysconfig/iptables.bakfirewall-cmd --reload 恢复默认配置。
  • 配置文件被覆盖:直接解压 /etc 备份到系统根目录(注意不要覆盖当前正在运行的进程的配置文件,建议重启相关服务)。

如果你提前按上一节做了 tar.gz 备份,恢复命令很简单:

cd / && tar xzf /root/etc-backup-20250312.tar.gz
systemctl reboot   # 建议重启系统让所有服务加载新配置

日常防范:建立AI脚本执行的“安全围栏”

最后,给你三个可落地的习惯:

  • 永远不要直接 source AI脚本,使用 bash script.sh 运行,避免脚本中的 exit 影响当前Shell。
  • 配置版本管理:对 /etc 下核心文件例如 sshd_confignginx.conf 使用 etckeeper 工具跟踪变更。
  • 设置执行前审批流程:团队内可以规定AI生成的脚本必须经过成员Code Review,核查有没有意外修改系统配置的操作。

如果你正在处理“用AI写Shell脚本,执行后系统配置被修改”的情况,建议先按本文的备份恢复步骤紧急回滚,再提前做好下一轮的安全审查。
把风险控制在执行前,远比事后挽救要省心得多。

分享到:
上一篇
服务器数据备份文件过大,如何压缩存储?
下一篇
服务器被植入后门,如何加固 SSH 登录?
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意