运维脚本写完能跑就行?半年后你自己都看不懂。五个习惯,写一次受用很久。

1. argparse 代替裸 sys.argv
参数一多就上 argparse,--help 自动生成,别人接手你的脚本不用读源码猜参数。别再 sys.argv[1] 了。

2. 日志用 logging,别 print
print 的输出混在一起没法查。logging 分级(INFO/WARNING/ERROR),加上时间戳和模块名,脚本跑在 cron 里出问题直接看日志文件。

3. 干跑模式(dry-run)
凡是会改系统状态的脚本(删文件、重启服务、改配置),先加 --dry-run 只打印将要做的操作。生产环境执行前先干跑一遍,能救命。

4. 异常要具体,退出码要规范
别一个大 try 包住全部。预期的异常分别 catch,打日志说明上下文;退出码 0 成功、非 0 失败,让调用方(ansible、cron、CI)能正确判断。

5. 幂等性
脚本跑两遍,结果应该和跑一遍一样。"不存在则创建、存在则跳过",别写"存在就报错"的逻辑。半夜被叫醒重跑脚本时,你会感谢这个习惯。

另外:超过 200 行的脚本,考虑拆成模块或换成正经项目结构。你写运维脚本还有什么心得?