Python 学习大纲
Python 系统化学习路线——面向运维工程师,从基础到工程化再到应用开发。
一、整体学习思路
运维学 Python 核心目标:替代 Shell、批量操作、自动化运维、日志分析、监控告警、平台开发
学习顺序:Python 基础语法 → 运维专属语法/工具 → 系统&网络编程 → 运维常用库 → 实战脚本 → 进阶自动化/Web 运维平台
不深究复杂算法、面向对象高级特性、前端等,重实操、重脚本、重业务落地。
二、第一阶段:Python 基础(必学,1~2 周)
目标:能独立写简单脚本,看懂现有代码,替代简单 Shell。
1. 环境准备
- 系统环境:Linux 主流预装 Python3,学会区分
python/python3、pip/pip3 - 编辑器:
vim/ VS Code(远程连接 Linux) - 运行方式:交互式执行、脚本文件执行、后台运行、定时执行(结合
crontab)
2. 核心语法(运维只学高频)
(1)基础数据类型与变量
- 字符串(运维最高频):拼接、截取、替换、分割、转义、正则前置基础
- 数字、布尔值
- 列表
list、字典dict(核心容器,存主机信息、配置、接口返回数据) - 元组、集合(了解即可)
(2)流程控制
- 分支:
if / elif / else(判断状态、返回码、文件是否存在) - 循环:
for(遍历主机、文件、日志、列表)、while(循环重试、持续监听) - 关键字:
break/continue
(3)函数
- 函数定义
def、参数、返回值 - 作用:代码复用(批量执行命令、封装检查逻辑)
- 不用深究:装饰器、闭包、高阶函数(后期进阶再看)
(4)异常处理(运维脚本必备)
try...except...finally
作用:脚本容错,避免单台主机报错导致整个批量任务中断。
(5)模块与包
import导入内置模块、第三方库- 理解:模块 = 功能文件,库 = 工具合集
3. 基础实操练习(立刻上手)
- 变量、字符串处理:截取 IP、端口、日志关键字
- 循环遍历:遍历主机列表、遍历日志文件行
- 简单判断:判断文件是否存在、服务状态码、端口是否监听
- 函数封装:封装“执行命令”“检查服务”通用函数
- 异常捕获:命令执行失败不退出脚本
三、第二阶段:Linux 系统运维核心(重中之重,2~3 周)
Python 操作 Linux 文件、进程、命令、路径、权限,完全对标日常运维工作,是脚本主力。
1. 文件与目录操作(90% 运维脚本都会用到)
内置模块:os、os.path、shutil
必学功能
- 路径拼接、判断文件/目录是否存在
- 遍历目录、递归遍历目录(查找日志、配置文件)
- 创建/删除/重命名 文件、目录
- 文件读写:
open()读写文本/日志、按行读取大文件(日志分析核心) - 复制、移动文件/文件夹
- 获取文件大小、修改时间、权限
运维场景
日志切割、配置文件备份、批量修改配置、文件巡检。
2. 执行 Shell 命令(核心能力)
内置模块:subprocess(首选,替代老旧 os.system / os.popen)
必学功能
- 本地执行 Linux 命令:
df -h、ps -ef、systemctl status、netstat - 获取命令返回码、标准输出、标准错误(判断命令执行成功/失败)
- 管道、后台执行、超时控制(防止脚本卡死)
- 调用 Shell 脚本、传递参数
运维场景
批量查看磁盘、内存、进程、端口;启停服务;执行运维命令。
3. 进程、用户、系统信息
内置模块:psutil(第三方,运维神器,必须装)
必学功能
- 获取 CPU、内存、磁盘、网络使用率
- 查找进程、杀死进程、判断进程是否运行
- 获取系统负载、开机时长、用户信息
运维场景
服务器资源巡检、进程守护、简易监控脚本。
4. 时间与日期处理
内置模块:time、datetime
必学功能
- 获取当前时间、时间格式化(日志时间、脚本日志输出)
- 时间运算:时间差、定时判断、日志时间筛选
- 时间戳转换(日志、监控数据常用)
5. 正则表达式(日志/文本处理必备)
内置模块:re
必学语法(运维够用即可,不用学全)
- 匹配数字、IP、端口、URL、日志关键字
- 提取字符串、替换内容、按规则过滤日志行
场景
日志过滤、日志关键字提取、批量解析配置、文本清洗。
四、第三阶段:网络运维 & 批量运维(核心自动化,2~3 周)
面向多服务器批量管理、远程执行、端口检测、接口调用,对应批量运维、堡垒机、自动化上线场景。
1. 远程连接 Linux 主机(高频)
第三方库:paramiko、netmiko(网络设备/交换机)
必学功能(paramiko 为主)
- SSH 远程登录主机(账号密码 / 密钥登录,生产优先密钥)
- 远程执行命令、批量在多台机器执行命令
- 远程上传/下载文件(批量分发配置、脚本、包)
- 异常处理、连接超时
场景
批量巡检、批量启停服务、批量下发配置、批量上传文件。
2. 端口、网络检测
- 内置
socket:检测主机端口是否开放(80、9092、22 等) - 批量端口扫描、主机存活探测
3. 网络请求 & API 调用
第三方库:requests(运维第一网络库,必学)
必学功能
- 发送 GET/POST 请求(调用监控平台、CMDB、接口、告警接口)
- 解析 JSON 格式返回数据
- 超时、重试、请求头、证书忽略
场景
对接运维平台、推送告警、获取主机资产、调用中间件 API(Kafka、Redis、MySQL 接口)
4. 数据格式解析
运维标配两种格式:
- JSON:内置
json模块(接口返回、配置文件主流格式)
- json ↔ 字典 相互转换
- YAML:第三方
pyyaml(Ansible、K8s、Docker 配置文件)
- 读取、解析、修改 YAML 配置
五、第四阶段:中间件 & 数据库运维(按需学习,看业务栈)
如果你日常维护 MySQL、Redis、Kafka、ELK 等,针对性学习对应客户端库,纯主机运维可暂缓。
1. 数据库
MySQL / MariaDB
库:pymysql
- 连接数据库、执行 SQL(查询状态、慢日志、巡检数据)
- 增删改查、批量查询
Redis
库:redis-py
- 连接、查询 Key、监控内存、状态查看
2. 消息队列 & 大数据
Kafka
库:kafka-python / confluent-kafka
- 连接集群、查看 Topic、分区、偏移量
- 简单生产/消费消息、监控消息堆积
3. 日志 & 检索
elasticsearch库:对接 ES 查询日志、统计日志量
4. 容器 & 云原生(当下运维主流)
Docker
库:docker SDK
- 操作容器、镜像、查看状态、启停容器
K8s
库:kubernetes 官方 SDK
- 操作 Pod、Deployment、Service、查询集群资源、批量管理
六、第五阶段:高级能力 & 工程化(进阶,自动化/运维平台方向)
适合想从脚本运维转向自动化运维开发、运维平台开发的人员。
1. 并发/并行(批量任务提速)
批量操作上百台主机时,串行执行太慢,必须学:
- 多线程
threading/ 线程池concurrent.futures.ThreadPoolExecutor(运维首选,IO 密集型任务:SSH、网络请求) - 多进程(了解即可,CPU 密集才用,运维很少)
2. 日志模块
内置 logging:规范脚本日志输出(分级、日志文件、轮转)
替代 print,生产脚本必备。
3. 命令行参数
内置 argparse:给脚本加命令行参数,类似 ls -l,让脚本可灵活传参。
例:python check_server.py --host 192.168.1.100 --port 9092
4. 定时任务结合
Python脚本 + crontab 实现定时巡检、定时备份、定时清理日志。
5. 简单 Web 运维平台(可选)
想做简易后台、资产管理、运维工具页面:
- 轻量框架:Flask(简单易上手,运维首选)
- 不用学 Django(太重,业务开发用)
6. 结合 Ansible(强强联合)
两种用法:
- Python 调用 Ansible API,批量执行 Playbook/Role
- 用 Python 写 Ansible 自定义模块
七、运维 Python 必装第三方库清单(按优先级排序)
# 基础系统监控
pip3 install psutil
# 远程 SSH 批量运维
pip3 install paramiko
# 网络请求、调用接口
pip3 install requests
# 解析 yaml(Ansible/K8s 必备)
pip3 install pyyaml
# 数据库
pip3 install pymysql redis
# Kafka 运维
pip3 install kafka-python
# Docker SDK
pip3 install docker
# 并发线程池(批量任务加速)
# 内置库,无需安装:concurrent.futures
八、分阶段实战脚本案例(学完就练,循序渐进)
入门级(基础语法)
- 批量遍历目录,统计日志文件行数
- 判断指定服务端口是否监听
- 读取配置文件,提取 IP 和端口
进阶级(系统+命令)
- 服务器资源巡检脚本(CPU/内存/磁盘/负载)
- 批量清理过期日志文件
- 监控关键进程,挂掉自动重启
自动化级(批量+远程)
- 多主机批量执行命令(查看磁盘、版本)
- 批量远程下发配置文件
- 端口批量扫描脚本
- 日志关键字告警脚本(匹配错误日志,调用接口发告警)
中高级(中间件/云原生)
- MySQL 慢查询巡检、状态监控
- Kafka 分区、偏移量、消息堆积监控脚本
- Docker 容器批量状态巡检
- 对接 CMDB 接口,自动同步主机资产
九、学习避坑 & 运维专属建议
- 不要像开发一样深挖不用学:复杂算法、设计模式、类的高级用法、异步
asyncio(除非做高并发网关)、前端、大数据底层。
一切围绕 “运维工作提效”。 - 优先替代 Shell
把日常重复 Shell 脚本改成 Python,边改边学,进步最快。 - 脚本三大原则(生产规范)
- 加异常捕获:避免批量任务一台报错全停
- 加日志:不用 print,用
logging - 加超时:SSH、命令、网络请求都设置超时,防止卡死
- Linux 是根基
Python 只是工具,Linux 命令、服务、网络、中间件原理必须熟练,否则脚本写出来也不会用。 - 结合你之前学的技术
可以写 Python 脚本监控 Kafka 状态、网络连接、Socket 连接数,学以致用。
十、最简学习路线总结(背诵版)
- 第一阶段:Python 基础语法 + 异常 + 函数(会写简单脚本)
- 第二阶段:文件/目录 + subprocess 执行命令 + psutil 系统监控 + 正则(本地运维脚本)
- 第三阶段:paramiko 远程 SSH + requests 接口 + JSON/YAML 解析(批量自动化)
- 第四阶段:按需学习 MySQL/Redis/Kafka/Docker 客户端库(中间件运维)
- 第五阶段:线程池并发 + logging + argparse + Flask(进阶自动化/运维平台)
关联文档
- Shell 基础 — Shell 脚本对比
- 20-areas/cloud-native/linux/system/Linux 基础 — Linux 系统管理