用 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或虚拟机做个“替身”测试
零基础用户也可以快速搭建一个安全测试环境:
- 使用Docker(推荐):运行一个跟服务器同版本的基础镜像,挂载临时目录测试。
docker run -it --rm -v $(pwd):/work centos:7 bash
cd /work
bash script.sh # 观察输出,不会影响宿主机
- 使用临时虚拟机(如果没有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.bak或firewall-cmd --reload恢复默认配置。 - 配置文件被覆盖:直接解压
/etc备份到系统根目录(注意不要覆盖当前正在运行的进程的配置文件,建议重启相关服务)。
如果你提前按上一节做了 tar.gz 备份,恢复命令很简单:
cd / && tar xzf /root/etc-backup-20250312.tar.gz
systemctl reboot # 建议重启系统让所有服务加载新配置
日常防范:建立AI脚本执行的“安全围栏”
最后,给你三个可落地的习惯:
- 永远不要直接
sourceAI脚本,使用bash script.sh运行,避免脚本中的exit影响当前Shell。 - 配置版本管理:对
/etc下核心文件例如sshd_config、nginx.conf使用etckeeper工具跟踪变更。 - 设置执行前审批流程:团队内可以规定AI生成的脚本必须经过成员Code Review,核查有没有意外修改系统配置的操作。
如果你正在处理“用AI写Shell脚本,执行后系统配置被修改”的情况,建议先按本文的备份恢复步骤紧急回滚,再提前做好下一轮的安全审查。
把风险控制在执行前,远比事后挽救要省心得多。