Linux 系統自動化運維 (Python版)(微課版)
張莉,丁傳煒
買這商品的人也買了...
-
$454Python Linux 系統管理與自動化運維
-
$440$374 -
$450$383 -
$520$442 -
$250Git 從入門到精通
-
$403Web 安全 360度全面防護
-
$458Flutter 內核源碼剖析
-
$620$490 -
$714$678 -
$403Web 滲透測試新手實操詳解
-
$828$787 -
$650$507 -
$534$507 -
$779$740 -
$599$569 -
$305網絡攻防實訓 (微課視頻版)
-
$720$540 -
$780$616 -
$469LangChain 入門指南:構建高可復用、可擴展的 LLM 應用程序
-
$658一本書講透 Elasticsearch:原理、進階與工程實務
-
$454高效使用 Redis:一書學透數據存儲與高可用集群
-
$790$624 -
$354$336 -
$774$735 -
$620$490
相關主題
商品描述
本書主要講解Python在Linux系統運維開發中的典型應用,通過面向實際運維場景的任務實施,幫助讀者掌握Python在系統自動化運維領域的應用。本書共8個項目,內容包括系統自動化運維:從Shell到Python、監控系統與調度運維任務、處理文件內容與配置文件、記錄日誌與發送郵件、運維數據記錄與可視化、遠程管理和批量運維服務器、網絡管理和網絡安全、企業級系統綜合運維。
本書內容豐富、結構清晰、重點突出、難點分散,註重實踐性和可操作性,對項目中的每個任務都提供詳細的代碼和解說,便於讀者快速上手。
本書可作為高校電腦類專業的Python編程教材,也可作為Linux系統運維教材,還適合廣大從事Python自動化運維開發工作的初學者學習和參考。
作者簡介
张莉,副教授,浙江安防职业技术学院大数据技术专业负责人。清华大学访问学者,美国加州大学圣地亚哥分校访问学者,主要从事大数据技术教学和科研工作,主持省级以上科研项目3项,主编教材3部,专利6项,核心期刊发表论文2篇。
目錄大綱
項目1 系統自動化運維:從Shell到Python 1
知識目標 1
技能目標 1
素養目標 1
任務1.1 從Shell編程開始系統自動化運維 1
任務要求 1
相關知識 2
1.1.1 初識系統自動化運維 2
1.1.2 Linux系統自動化運維的基本工具——Shell腳本 3
任務實現 4
任務1.1.1 準備實驗環境 4
任務1.1.2 編寫Shell腳本批量創建Linux用戶賬戶 5
任務1.1.3 編寫Shell腳本批量檢測主機在線狀態 7
任務1.1.4 編寫Shell腳本一鍵安裝JDK 8
任務1.1.5 編寫Shell腳本監控Linux系統性能 9
任務1.2 使用Python提升系統自動化運維技能 13
任務要求 13
相關知識 13
1.2.1 Python簡介 13
1.2.2 Python的模塊、包與庫 14
1.2.3 Python與系統自動化運維 15
任務實現 15
任務1.2.1 搭建Python開發環境 15
任務1.2.2 編寫Python程序監控Linux系統性能 18
任務1.3 使用Python執行外部命令 23
任務要求 23
相關知識 23
1.3.1 subprocess模塊簡介 23
1.3.2 subprocess模塊的便利函數 23
1.3.3 subprocess模塊的Popen類 25
任務實現 26
任務1.3.1 使用subprocess模塊編程批量檢測主機在線狀態 26
任務1.3.2 編寫通用的外部命令執行函數 27
項目小結 28
課後練習 28
項目實訓 29
實訓1 編寫Shell腳本監控系統性能 29
實訓2 編寫Python腳本監控系統負載 29
實訓3 使用subprocess模塊編程創建Linux用戶賬戶 29
項目2 監控系統與調度運維任務 30
知識目標 30
技能目標 30
素養目標 30
任務2.1 採集系統信息和管理進程 30
任務要求 30
相關知識 31
2.1.1 瞭解psutil庫 31
2.1.2 系統信息相關函數 31
2.1.3 進程管理功能 33
任務實現 34
任務2.1.1 使用psutil庫採集系統信息 34
任務2.1.2 使用psutil庫實現進程管理 37
任務2.2 監控文件系統更改 37
任務要求 37
相關知識 38
2.2.1 瞭解pyinotify庫 38
2.2.2 瞭解watchdog庫 40
任務實現 42
任務2.2.1 基於pyinotify庫編寫文件系統更改監控程序 42
任務2.2.2 基於watchdog庫編寫文件系統更改監控程序 43
任務2.3 監控Web服務 45
任務要求 45
相關知識 45
2.3.1 PycURL庫簡介 45
2.3.2 PycURL庫的基本用法 46
任務實現 48
基於PycURL庫編寫Web服務監控程序 48
任務2.4 調度運維任務 50
任務要求 50
相關知識 50
2.4.1 APScheduler庫的組件 50
2.4.2 APScheduler庫的基本用法 51
任務實現 54
任務2.4.1 使用Cron服務調度運維任務 54
任務2.4.2 基於APScheduler庫編程調度運維
任務 54
項目小結 55
課後練習 55
項目實訓 56
實訓1 使用psutil庫編程獲取系統啟動時間和登錄信息 56
實訓2 使用watchdog庫編程監控文件的移動 56
實訓3 使用PycURL庫編程判斷Web服務的可用性 57
實訓4 使用APScheduler庫編程調度監控任務 57
項目3 處理文件內容與配置文件 58
知識目標 58
技能目標 58
素養目標 58
任務3.1 解析和處理文件內容 58
任務要求 58
相關知識 59
3.1.1 字符串及其操作 59
3.1.2 文本文件的讀寫 60
3.1.3 編碼和解碼 61
3.1.4 正則表達式 62
任務實現 65
任務3.1.1 統計用戶賬戶 65
任務3.1.2 查看配置文件並去除註釋和空行 66
任務3.2 操作配置文件 67
任務要求 67
相關知識 67
3.2.1 INI文件及其Python操作方法 67
3.2.2 XML文件及其Python解析方法 68
3.2.3 JSON文件及其Python操作方法 69
3.2.4 YAML文件及其Python操作方法 70
任務實現 72
任務3.2.1 編程操作INI文件 72
任務3.2.2 使用DOM方法讀寫XML文件 73
任務3.2.3 編程操作JSON文件 74
任務3.2.4 編程操作YAML文件 75
任務3.3 使用模板高效處理文本文件 76
任務要求 76
相關知識 76
3.3.1 什麽是模板 76
3.3.2 Jinja2模板語法 77
3.3.3 Jinja2模板的渲染 78
任務實現 79
任務3.3.1 使用Jinja2模板生成HTML文件 79
任務3.3.2 使用Jinja2模板生成XML文件 80
任務3.4 比對文件和目錄內容 81
任務要求 81
相關知識 81
3.4.1 difflib模塊 81
3.4.2 filecmp模塊 82
任務實現 83
任務3.4.1 使用difflib模塊編程比較兩個文件
內容 83
任務3.4.2 使用filecmp模塊編程比較兩個目錄
內容 84
項目小結 85
課後練習 86
項目實訓 87
實訓1 獲取網頁中所有圖片的鏈接 87
實訓2 編寫將XML文件轉換為YAML文件的Python程序 87
實訓3 使用Jinja2模板生成HTML報表 87
項目4 記錄日誌與發送郵件 88
知識目標 88
技能目標 88
素養目標 88
任務4.1 記錄日誌 88
任務要求 88
相關知識 89
4.1.1 為什麽要使用logging模塊 89
4.1.2 logging模塊的日誌級別 89
4.1.3 logging模塊的基本用法 89
4.1.4 logging模塊的類 91
4.1.5 日誌記錄的配置 94
任務實現 94
任務4.1.1 將日誌消息同時輸出到屏幕和文件 94
任務4.1.2 使用日誌文件記錄異常處理信息 95
任務4.1.3 使用日誌記錄系統監控異常信息 96
任務4.2 發送郵件 97
任務要求 97
相關知識 97
4.2.1 smtplib模塊及其基本用法 97
4.2.2 email模塊及其基本用法 98
任務實現 100
任務4.2.1 通過郵件發送報警通知 100
任務4.2.2 通過郵件發送運維報告 102
項目小結 103
課後練習 103
項目實訓 104
實訓1 使用日誌記錄文件刪除和移動監控的信息 104
實訓2 監控文件刪除和移動並發送郵件通知 104
項目5 運維數據記錄與可視化 105
知識目標 105
技能目標 105
素養目標 105
任務5.1 記錄運維數據 105
任務要求 105
相關知識 106
5.1.1 純文本的CSV文件 106
5.1.2 功能強大的Excel文件 106
5.1.3 使用數據庫存儲 109
任務實現 110
任務5.1.1 使用CSV文件記錄系統監控數據 110
任務5.1.2 使用SQLite數據庫記錄系統監控數據 112
任務5.2 可視化運維數據 114
任務要求 114
相關知識 115
5.2.1 經典的Python繪圖庫Matplotlib 115
5.2.2 高效、簡潔的Web可視化框架Dash 116
任務實現 121
任務5.2.1 基於Matplotlib庫生成系統監控數據統計圖表 121
任務5.2.2 通過Dash框架實現系統監控數據儀表盤 123
項目小結 127
課後練習 127
項目實訓 128
實訓1 使用Excel文件記錄系統監控數據並繪制CPU使用率的折線圖 128
實訓2 基於Dash框架繪制CPU和內存使用率的柱形圖 128
項目6 遠程管理和批量運維服務器 129
知識目標 129
技能目標 129
素養目標 129
任務6.1 使用Paramiko庫遠程管理服務器 129
任務要求 129
相關知識 130
6.1.1 SSH協議 130
6.1.2 Paramiko庫簡介 130
6.1.3 使用SSHClient類建立SSH連接 131
6.1.4 使用Transport類控制SSH連接 132
6.1.5 使用SFTPClient實現文件傳輸 133
任務實現 134
任務6.1.1 搭建多服務器實驗環境 134
任務6.1.2 基於密鑰認證連接遠程服務器 135
任務6.1.3 在遠程服務器上執行sudo命令 137
任務6.1.4 實現交互式操作的遠程偽終端 138
任務6.2 使用Fabric庫批量管理和運維服務器 139
任務要求 139
相關知識 140
6.2.1 Fabric庫簡介 140
6.2.2 Connection類的基本用法 140
6.2.3 為sudo命令自動提供密碼 143
6.2.4 批量操作遠程服務器 143
6.2.5 傳統的fab命令行工具 145
任務實現 145
任務6.2.1 批量部署源代碼 145
任務6.2.2 集中採集多台服務器的系統信息 147
任務6.2.3 自動部署LAMP平臺 148
項目小結 150
課後練習 150
項目實訓 151
實訓1 使用Paramiko庫編程實現基於密鑰認證的SSH客戶端 151
實訓2 使用Fabric庫編程實現批量採集服務器的網絡流量信息 151
實訓3 使用Fabric庫編程實現自動安裝Docker CE 152
項目7 網絡管理和網絡安全 153
知識目標 153
技能目標 153
素養目標 153
任務7.1 IP地址管理與DNS解析 153
任務要求 153
相關知識 154
7.1.1 IPy庫及其基本用法 154
7.1.2 dnspython庫及其基本用法 156
任務實現 157
任務7.1.1 使用IPy庫解析IP地址 157
任務7.1.2 使用dnspython庫解析DNS記錄 158
任務7.2 實現網絡探測和安全掃描 159
任務要求 159
相關知識 160
7.2.1 nmap工具 160
7.2.2 python-nmap庫 164
任務實現 166
任務7.2.1 檢測網絡中在線狀態的主機 166
任務7.2.2 檢測主機的服務及版本 166
任務7.3 使用Scapy庫處理網絡數據包 167
任務要求 167
相關知識 168
7.3.1 Scapy庫簡介 168
7.3.2 Scapy庫的基本使用方法 168
任務實現 174
任務7.3.1 使用Scapy庫進行SYN掃描 174
任務7.3.2 使用Scapy庫進行TCP路由跟蹤 175
任務7.3.3 使用Scapy庫進行抓包重放 175
項目小結 177
課後練習 177
項目實訓 178
實訓1 檢測主機的服務及版本並將結果生成HTML報表 178
實訓2 使用Scapy庫抓取網絡數據包並進行處理 178
項目8 企業級系統綜合運維 179
知識目標 179
技能目標 179
素養目標 179
任務8.1 熟悉Ansible的基本用法 179
任務要求 179
相關知識 180
8.1.1 Ansible的特點和應用 180
8.1.2 Ansible的基本架構 181
8.1.3 安裝Ansible 181
8.1.4 配置Ansible 182
8.1.5 編寫清單文件 183
8.1.6 配置SSH連接 184
8.1.7 Ansible的模塊 185
8.1.8 使用Ansible即席命令 186
8.1.9 命令執行模塊 187
任務實現 187
任務8.1.1 使用Ansible在目標主機上執行Shell腳本 187
任務8.1.2 使用Ansible提權操作目標主機 190
任務8.2 基於Playbook實現自動化任務 190
任務要求 190
相關知識 191
8.2.1 Playbook的基本語法 191
8.2.2 運行Playbook 193
8.2.3 在Playbook中使用處理程序 195
8.2.4 在Playbook中定義和使用變量 195
8.2.5 在Playbook中使用控制結構 197
8.2.6 使用Ansible Vault加密內容 198
任務實現 200
任務8.2.1 使用Playbook配置系統時鐘同步 200
任務8.2.2 使用Playbook批量添加用戶賬戶 202
任務8.3 使用Ansible角色組織Playbook 204
任務要求 204
相關知識 204
8.3.1 理解Ansible角色 204
8.3.2 使用Ansible Galaxy 208
任務實現 210
任務8.3.1 通過角色部署Web負載平衡 210
任務8.3.2 通過Ansible Galaxy部署角色 216
任務8.4 部署Zabbix監控平臺 218
任務要求 218
相關知識 218
8.4.1 Zabbix的主要特性 218
8.4.2 Zabbix的基本架構 219
任務實現 219
任務8.4.1 以容器形式安裝Zabbix服務器 219
任務8.4.2 使用Ansible部署Zabbix代理 222
任務8.4.3 試用Zabbix實現系統監控 225
項目小結 227
課後練習 228
項目實訓 229
實訓1 使用Ansible即席命令執行Shell腳本檢測目標主機的CPU使用率 229
實訓2 使用Playbook批量更改CentOS的系統環境配置 229
實訓3 從Ansible Galaxy獲取Redis角色並在CentOS服務器上部署 230