学习笔记:Python Linux系统管理与自动化运维

观其大纲

第1章 Python语言与Linux系统管理
第2章 Python生态工具
第3章 打造命令行工具
第4章 文本处理
第5章 Linux系统管理
第6章 使用Python监控Linux系统
第7章 文档与报告
第8章 网络
第9章 Python自动化管理
第10章 深入浅出Ansible
第11章 使用Python打造MySQL专家系统

大纲细节

第1章 Python语言与Linux系统管理 1
1.1 Python语言有多流行 1
1.2 Python语言为什么流行 3
1.3 Python语言有什么缺点 4
1.4 Python语言的应用场景 4
1.5 为什么Python适合Linux系统管理 5
1.6 使用Python 2还是Python 3 6
第2章 Python生态工具 9
2.1 Python内置小工具 9
2.1.1 1秒钟启动一个下载服务器 10
2.1.2 字符串转换为JSON 10
2.1.3 检查第三方库是否正确安装 11
2.2 pip高级用法 12
2.2.1 pip介绍 12
2.2.2 pip常用命令 12
2.2.3 加速pip安装的技巧 14
2.3 Python编辑器 15
2.3.1 编写Python的vim插件 15
2.3.2 Windows下Python编辑器PyCharm介绍 17
2.4 Python编程辅助工具 18
2.4.1 Python交互式编程 18
2.4.2 使用IPython交互式编程 20
2.4.3 jupyter的使用 29
2.5 Python调试器 31
2.5.1 标准库的pdb 32
2.5.2 开源的ipdb 34
2.6 Python代码规范检查 34
2.6.1 PEP 8编码规范介绍 34
2.6.2 使用pycodestyle检查代码规范 36
2.6.3 使用autopep8将代码格式化 37
2.7 Python工作环境管理 39
2.7.1 使用pyenv管理不同的Python版本 39
2.7.2 使用virtualenv管理不同的项目 42
2.8 本章总结 43
第3章 打造命令行工具 44
3.1 与命令行相关的Python语言特性 44
3.1.1 使用sys.argv获取命令行参数 45
3.1.2 使用sys.stdin和fileinput读取标准输入 46
3.1.3 使用SystemExit异常打印错误信息 48
3.1.4 使用getpass库读取密码 49
3.2 使用ConfigParse解析配置文件 49
3.3 使用argparse解析命令行参数 52
3.3.1 ArgumentParse解析器 52
3.3.2 模仿MySQL客户端的命令行参数 54
3.4 使用logging记录日志 55
3.4.1 日志的作用 55
3.4.2 Python的logging模块 56
3.4.3 配置日志格式 56
3.5 与命令行相关的开源项目 59
3.5.1 使用click解析命令行参数 59
3.5.2 使用prompt_toolkit打造交互式命令行工具 61
3.6 本章总结 64
第4章 文本处理 65
4.1 字符串常量 66
4.1.1 定义字符串 66
4.1.2 字符串是不可变的有序集合 68
4.1.3 字符串函数 71
4.1.4 案例:使用Python分析Apache的访问日志 79
4.1.5 字符串格式化 83
4.2 正则表达式 85
4.2.1 正则表达式语法 86
4.2.2 利用re库处理正则表达式 87
4.2.3 常用的re方法 90
4.2.4 案例:获取HTML页面中的所有超链接 94
4.3 字符集编码 94
4.3.1 编码历史 95
4.3.2 UTF-8编码 96
4.3.3 从字符集的问题说起 98
4.3.4 Python 2和Python 3中的Unicode 99
4.4 Jinja2模板 101
4.4.1 模板介绍 102
4.4.2 Jinja2语法入门 102
4.4.3 Jinja2实战 108
4.4.4 案例:使用Jinja2生成HTML表格和XML配置文件 112
4.5 本章总结 116
第5章 Linux系统管理 117
5.1 文件读写 118
5.1.1 Python内置的open函数 118
5.1.2 避免文件句柄泄露 119
5.1.3 常见的文件操作函数 120
5.1.4 Python的文件是一个可迭代对象 121
5.1.5 案例:将文件中所有单词的首字母变成大写 122
5.2 文件与文件路径管理 123
5.2.1 使用os.path进行路径和文件管理 123
5.2.2 使用os模块管理文件和目录 126
5.2.3 案例:打印最常用的10条Linux命令 128
5.3 查找文件 129
5.3.1 使用fnmatch找到特定的文件 129
5.3.2 使用glob找到特定的文件 130
5.3.3 使用os.walk遍历目录树 131
5.3.4 案例:找到目录下最大(或最老)的十个文件 132
5.4 高级文件处理接口shutil 134
5.4.1 复制文件和文件夹 135
5.4.2 文件和文件夹的移动与改名 135
5.4.3 删除目录 136
5.5 文件内容管理 136
5.5.1 目录和文件比较 137
5.5.2 MD5校验和比较 139
5.5.3 案例:找到目录下的重复文件 139
5.6 使用Python管理压缩包 141
5.6.1 使用tarfile库读取与创建tar包 141
5.6.2 使用tarfile库读取与创建压缩包 142
5.6.3 案例:备份指定文件到压缩包中 142
5.6.4 使用zipfile库创建和读取zip压缩包 143
5.6.5 案例:暴力破解zip压缩包的密码 144
5.6.6 使用shutil创建和读取压缩包 146
5.7 Python中执行外部命令 148
5.7.1 subprocess模块简介 149
5.7.2 subprocess模块的便利函数 149
5.7.3 subprocess模块的Popen类 151
5.8 综合案例:使用Python部署MongoDB 152
5.9 本章总结 155
第6章 使用Python监控Linux系统 156
6.1 Python编写的监控工具 157
6.1.1 多功能系统资源统计工具dstat 157
6.1.2 交互式监控工具glances 160
6.2 使用Python打造自己的监控工具 163
6.2.1 Linux系统的/proc目录介绍 163
6.2.2 proc目录下常用文件介绍 164
6.2.3 进程目录下常用文件介绍 165
6.2.4 利用/proc目录找到被删除的文件 166
6.2.5 使用shell脚本监控Linux 168
6.2.6 使用Python监控Linux 170
6.3 使用开源库监控Linux 172
6.3.1 psutil介绍 172
6.3.2 psutil提供的功能函数 172
6.3.3 综合案例:使用psutil实现监控程序 177
6.3.4 psutil进程管理 180
6.4 使用pyinotify监控文件系统变化 181
6.4.1 pyinotify模块介绍 181
6.4.2 pyinotify模块API 182
6.4.3 事件标志与事件处理器 182
6.5 监控应用程序 184
6.5.1 使用Python监控MySQL 184
6.5.2 使用Python监控MongoDB 185
6.6 本章总结 185
第7章 文档与报告 186
7.1 使用Python处理Excel文档 187
7.1.1 openpyxl简介与安装 187
7.1.2 使用openpyxl读取Excel文档 187
7.1.3 使用openpyxl修改Excel文档 192
7.1.4 案例:合并多个Excel文档到一个Excel文档 195
7.2 使用Python操作PDF文档 197
7.2.1 PyPDF2安装与介绍 197
7.2.2 使用PdfFileReader读取PDF文件 198
7.2.3 使用PdfFileWriter创建PDF文件 199
7.2.4 修改PDF页面 201
7.2.5 使用PdfFileMerger合并多个PDF文件 203
7.3 使用Python归档图片 205
7.3.1 Exif信息介绍 205
7.3.2 在Python使用PIL查看图片元信息 207
7.4 发送报告 210
7.4.1 SMTP协议 211
7.4.2 邮箱设置(以QQ邮箱为例) 212
7.4.3 使用标准库的smtplib与mime发送邮件 212
7.4.4 使用开源的yagmail发送邮件 216
7.5 接收邮件 217
7.5.1 接收邮件协议IMAP与POP3 217
7.5.2 使用开源从imapclient接收邮件 217
7.5.3 使用pyzmail解析邮件 219
7.5.4 使用imapclient删除邮件 219
7.6 综合案例:使用Python打造一个geek的邮件客户端 220
7.6.1 emcli的功能设计 220
7.6.2 emcli的功能实现 221
7.6.3 使用setuptools打包源码 223
7.6.4 使用twine上传到PyPi 224
7.7 本章总结 225
第8章 网络 226
8.1 列出网络上所有活跃的主机 226
8.1.1 使用ping命令判断主机是否活跃 227
8.1.2 使用Python判断主机是否活跃 228
8.1.3 使用生产者消费者模型减少线程的数量 229
8.2 端口扫描 231
8.2.1 使用Python编写端口扫描器 232
8.2.2 使用nmap扫描端口 234
8.2.3 使用python-nmap进行端口扫描 237
8.3 使用IPy进行IP地址管理 238
8.3.1 IPy模块介绍 239
8.3.2 IPy模块的基本使用 239
8.3.3 网段管理 241
8.4 使用dnspython解析DNS 242
8.4.1 dnspython简介与安装 242
8.4.2 使用dnspython进行域名解析 242
8.5 网络嗅探器Scapy 244
8.5.1 Scapy简介与安装 245
8.5.2 Scapy的基本使用 245
8.5.3 使用Scapy发送数据报 247
8.5.4 使用Scapy构造DNS查询请求 248
8.5.5 使用Scapy进行网络嗅探 251
8.5.6 案例:使用Scapy嗅探信用卡信息 251
8.6 本章总结 252
第9章 Python自动化管理 253
9.1 使用SSH协议访问远程服务器 254
9.1.1 SSH协议 254
9.1.2 OpenSSH实现 254
9.1.3 使用密钥登录远程服务器 256
9.1.4 使用ssh-agent管理私钥 257
9.2 使用Polysh批量管理服务器 258
9.2.1 批量修改密码 259
9.2.2 Polysh的使用 260
9.3 SSH协议的Python实现paramiko 261
9.3.1 paramiko的安装 261
9.3.2 SSHClient类与SFTPClient类 261
9.3.3 paramiko的基本使用 262
9.3.4 使用paramiko部署监控程序 264
9.4 自动化部署工具Fabric 264
9.4.1 Fabric安装 265
9.4.2 Fabric使用入门 265
9.4.3 fab的命令行参数 267
9.4.4 Fabric的env字典 267
9.4.5 Fabric提供的命令 269
9.4.6 Fabric提供的上下文管理器 271
9.4.7 Fabric提供的装饰器 273
9.4.8 其他功能函数 277
9.4.9 使用Fabric源码安装redis 279
9.4.10 综合案例:使用Fabric部署Flask应用 280
9.5 本章总结 284
第10章 深入浅出Ansible 286
10.1 Ansible介绍 287
10.1.1 Ansible的优点 287
10.1.2 Ansible与Fabric之间比较 288
10.1.3 Ansible与SaltStack之间比较 289
10.2 Ansible使用入门 290
10.2.1 安装Ansible 290
10.2.2 Ansible的架构 290
10.2.3 Ansible的运行环境 291
10.2.4 Ansible的ad-hoc模式 292
10.2.5 使用playbook控制服务器 293
10.3 Inventory管理 294
10.3.1 hosts文件位置 294
10.3.2 灵活定义hosts文件内容 295
10.3.3 灵活匹配hosts文件内容 296
10.3.4 动态Inventory获取 297
10.3.5 Inventory行为参数 302
10.3.6 定义服务器变量 303
10.4 YAML语法 304
10.5 Ansible模块 308
10.5.1 Ansible的模块工作原理 308
10.5.2 模块列表与帮助信息 309
10.5.3 常用的Ansible模块 309
10.5.4 模块的返回值 318
10.6 Playbook 319
10.6.1 Playbook的定义 319
10.6.2 使用ansible-playbook
执行Playbook 322
10.6.3 Playbook的详细语法 324
10.6.4 使用Playbook部署nginx 331
10.6.5 使用Playbook部署MongoDB 334
10.6.6 Playbook中的高级语法 335
10.7 role的定义与使用 341
10.7.1 role的概念 341
10.7.2 使用ansible-galaxy命令管理role 342
10.7.3 如何使用role 343
10.7.4 使用role改造部署MongoDB的例子 344
10.8 Ansible的配置文件 345
10.8.1 配置文件的查找路径 345
10.8.2 Ansible中的常用配置 345
10.9 Ansible的最佳实践 346
10.9.1 Ansible的文件组织 346
10.9.2 Ansible最佳实践 348
10.9.3 使用role部署LAMP应用 349
10.10 本章总结 352
第11章 使用Python打造MySQL专家系统 354
11.1 Python语言高级特性 354
11.1.1 深入浅出Python生成器 355
11.1.2 深入浅出Python装饰器 360
11.1.3 Python上下文管理器 368
11.2 MySQL数据库 372
11.2.1 MySQL数据库介绍 372
11.2.2 Python连接数据库 373
11.2.3 使用MySQLdb访问MySQL数据库 375
11.2.4 使用上下文管理器对数据库连接进行管理 378
11.2.5 案例:从csv文件导入数据到MySQL 379
11.3 Python并发编程 381
11.3.1 Python中的多线程 381
11.3.2 线程同步与互斥锁 384
11.3.3 线程安全队列Queue 386
11.3.4 案例:使用Python打造一个MySQL压测工具 387
11.4 专家系统设计 390
11.4.1 专家系统使用 391
11.4.2 专家系统检查内容 391
11.4.3 如何进行数据库检查 392
11.4.4 专家系统评分体系 394
11.5 MySQL专家系统整体架构 396
11.5.1 专家系统架构设计 396
11.5.2 专家系统文件组织 398
11.6 数据库专家系统的客户端设计 400
11.6.1 实现数据库连接池 400
11.6.2 使用装饰器检查参数 402
11.6.3 利用Python的动态语言特性执行命令 403
11.6.4 利用call方法实现可调用对象 405
11.6.5 Python的property 407
11.7 数据库专家系统服务端设计 408
11.7.1 将相同的操作提升到父类中 408
11.7.2 在Python中实现map-reduce模型 409
11.7.3 利用动态语言特性实现工厂模式 411
11.8 本章总结

熟知概念

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 观其大纲 第一部分 基本管理技术 1第1章 从何处入手 2第2章 脚本和shell 24第3章 引导和关机 62第...
    周少言阅读 1,736评论 1 2
  • 五月初夏蚊蝇多,月朦胧,鸟喳喳,漫步田埂。 健步走过稻田旁,青蛙叫,蟋蟀呜,路人偶遇。 锻炼身体健步走,须坚持,不...
    冲天农锄草阅读 308评论 4 12
  • 作为超级APP,微信已经成了移动互联网的入口。而我们也早已习惯通过微信收发图片与视频等多媒体文件。身为一名屌丝通信...
    老梅闲谈阅读 2,512评论 0 0
  • 棉花去旅行 冬天来临之前 他们就逃离了自己的村庄 带走吃饭用的碗,睡觉用的床 留下陪了他们一辈子的生了锈的 镰刀和...
    棉花去旅行阅读 277评论 2 5
  • 不进社团 了解专业的培养方案,多蹭课。 多关注一些对自己有意义的比赛或活动。但要注意,比赛在不在于多而在于精。 每...
    139亿阅读 96评论 0 0