推薦序一
推薦序二
推薦序三
前 言
第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 本章總結 412
· · · · · · (
收起)