1. 脚本初印象:什么是脚本?
说实话,很多人一听到「脚本」这个词,就觉得是黑客电影里那些满屏滚动的绿色代码。其实没那么玄乎。
我个人的理解很简单:脚本就是写给计算机看的一份「操作说明书」。你告诉它先做什么、再做什么,它就老老实实照做。不像人类会偷懒,计算机执行脚本时,一个字都不会漏。
举个例子。你每天上班要手动备份数据库、压缩日志、发邮件汇报。这一套操作下来,少说十分钟。写个脚本,一键搞定。嗯,这就是脚本最朴素的用法——把重复劳动自动化。
脚本语言 vs 编译型语言
这个问题,我当年刚入行时也困惑过。说白了,区别就在「翻译」的时机上。
| 对比项 | 脚本语言(如 Python、Bash) | 编译型语言(如 C、Go) |
|---|---|---|
| 执行方式 | 边解释边执行,不需要提前编译 | 写完代码要先编译成机器码,再运行 |
| 开发速度 | 快,改完就能跑 | 慢,改完要编译、链接 |
| 运行效率 | 相对慢一些 | 快,直接跑机器码 |
| 典型场景 | 自动化、胶水代码、快速原型 | 系统底层、高性能计算 |
你想想看,为什么运维和测试领域脚本语言这么流行?因为我们追求的是「快」——快速验证想法、快速修复问题。没人愿意为了改个日志路径,先等三分钟编译。
核心区别一句话:脚本语言牺牲了一点运行速度,换来了开发者的时间。在自动化运维里,人的时间比机器的时间贵多了。
脚本能做什么?
这个问题我经常被问到。我的回答是:凡是重复的、有规律的、需要人工盯着的活儿,脚本都能干。
我在项目中遇到过太多这样的场景了。比如凌晨三点,线上报警说磁盘快满了。你从被窝里爬起来,SSH 上去,敲命令查日志、删文件。一次两次还行,每周来三次,谁也受不了。写个脚本,让它自己检查、自己清理、自己发通知。你安心睡觉,它替你值班。
自动化运维
这是脚本最经典的战场。服务器批量部署、日志轮转、监控告警、配置备份……说白了,运维的日常工作就是「发现问题 -> 执行命令 -> 记录结果」。脚本就是把这些步骤固化下来。
- 批量检查 100 台服务器的磁盘使用率
- 自动拉取最新代码并重启服务
- 定时清理过期备份文件
我的习惯:写脚本时,永远先考虑「如果出错了怎么办」。加个 try-catch,写个日志,比啥都不做强一百倍。
数据处理
你手头有个 500MB 的 CSV 文件,老板让你统计每个月的销售额。用 Excel 打开?卡死。用 Python 脚本?几秒钟出结果。
脚本处理数据的优势在于:内存不够?分块读。格式太乱?正则清洗。结果要图表?直接生成。我经常用脚本做数据清洗,把乱七八糟的日志文件变成结构化的报表。
爬虫
爬虫说白了就是「模拟人类浏览网页」的脚本。你想收集某个网站的商品价格、新闻标题、招聘信息……写个脚本,自动抓取、自动解析、自动存库。
不过这里要提醒一句:爬虫有边界。尊重 robots.txt,别把人家服务器搞崩了。我曾经见过一个新手写的爬虫,没有加延时,直接把一个小网站爬挂了……嗯,后果很严重。
避坑指南:我曾经因为爬虫频率太高,被对方封了 IP。后来学乖了,每次请求之间随机等 1-3 秒,再加个 User-Agent 轮换。别贪快,稳才是王道。
测试
自动化测试是脚本的另一个大本营。接口测试、UI 测试、压力测试……脚本可以模拟用户操作,一遍又一遍地跑,不喊累。
我习惯在每次上线前,跑一遍自动化测试脚本。几百个用例,十几分钟跑完。要是手动测,得测到猴年马月去?
- 接口测试:验证 API 返回状态码和数据结构
- 回归测试:确保新代码没破坏旧功能
- 性能测试:模拟高并发,看系统扛不扛得住
一个简单的脚本示例
说了这么多,不如看个真家伙。下面这个 Python 脚本,检查当前目录下所有日志文件,如果超过 100MB 就压缩归档。
import os
import gzip
import shutil
log_dir = "./logs"
max_size_mb = 100
for filename in os.listdir(log_dir):
filepath = os.path.join(log_dir, filename)
if not filename.endswith(".log"):
continue
size_mb = os.path.getsize(filepath) / (1024 * 1024)
if size_mb > max_size_mb:
# 压缩文件
with open(filepath, 'rb') as f_in:
with gzip.open(filepath + '.gz', 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
os.remove(filepath)
print(f"已压缩: {filename} ({size_mb:.1f}MB)")
你看,不到二十行代码,就解决了一个实际运维问题。这就是脚本的魅力——小投入,大回报。
小结
脚本不是什么高深莫测的东西。它就是你的「数字助理」,帮你干那些枯燥、重复、耗时的活儿。从自动化运维到数据处理,从爬虫到测试,脚本无处不在。
接下来的课程,我会带你一步步从零开始,写出真正能用的脚本。别怕,跟着我走,你很快就会发现——写脚本比你想的简单得多。