Linux系統(tǒng)自動化運維(Python版)(微課版)
定 價:59.8 元
叢書名:工業(yè)和信息化精品系列教材
- 作者:張莉,丁傳煒
- 出版時間:2024/1/1
- ISBN:9787115628244
- 出 版 社:人民郵電出版社
- 中圖法分類:TP316.85
- 頁碼:230
- 紙張:
- 版次:01
- 開本:16開
本書主要講解Python在Linux系統(tǒng)運維開發(fā)中的典型應(yīng)用,通過面向?qū)嶋H運維場景的任務(wù)實施,幫助讀者掌握Python在系統(tǒng)自動化運維領(lǐng)域的應(yīng)用。本書共8個項目,內(nèi)容包括系統(tǒng)自動化運維:從Shell到Python、監(jiān)控系統(tǒng)與調(diào)度運維任務(wù)、處理文件內(nèi)容與配置文件、記錄日志與發(fā)送郵件、運維數(shù)據(jù)記錄與可視化、遠程管理和批量運維服務(wù)器、網(wǎng)絡(luò)管理和網(wǎng)絡(luò)安全、企業(yè)級系統(tǒng)綜合運維。
本書內(nèi)容豐富、結(jié)構(gòu)清晰、重點突出、難點分散,注重實踐性和可操作性,對項目中的每個任務(wù)都提供詳細的代碼和解說,便于讀者快速上手。
本書可作為高校計算機類專業(yè)的Python編程教材,也可作為Linux系統(tǒng)運維教材,還適合廣大從事Python自動化運維開發(fā)工作的初學者學習和參考。
實戰(zhàn)案例豐富:本書提供了大量的實戰(zhàn)案例,幫助讀者更好地理解和掌握Linux系統(tǒng)運維的知識和技能。
配套資源豐富:除了書本內(nèi)容,還提供了豐富的配套資源,使得學習過程更加生動和實用。
微課版特性:作為微課版圖書,本書在內(nèi)容上更加精煉和實用,適合快節(jié)奏的學習需求。
作者經(jīng)驗豐富:作者具有豐富的Linux系統(tǒng)運維和Python編程經(jīng)驗,保證了書本內(nèi)容的專業(yè)性和實用性。
張莉,副教授,浙江安防職業(yè)技術(shù)學院大數(shù)據(jù)技術(shù)專業(yè)負責人。清華大學訪問學者,美國加州大學圣地亞哥分校訪問學者,主要從事大數(shù)據(jù)技術(shù)教學和科研工作,主持省級以上科研項目3項,主編教材3部,專利6項,核心期刊發(fā)表論文2篇。
項目1 系統(tǒng)自動化運維:從Shell到Python 1
知識目標 1
技能目標 1
素養(yǎng)目標 1
任務(wù)1.1 從Shell編程開始系統(tǒng)自動化運維 1
任務(wù)要求 1
相關(guān)知識 2
1.1.1 初識系統(tǒng)自動化運維 2
1.1.2 Linux系統(tǒng)自動化運維的基本工具——Shell腳本 3
任務(wù)實現(xiàn) 4
任務(wù)1.1.1 準備實驗環(huán)境 4
任務(wù)1.1.2 編寫Shell腳本批量創(chuàng)建Linux用戶賬戶 5
任務(wù)1.1.3 編寫Shell腳本批量檢測主機在線狀態(tài) 7
任務(wù)1.1.4 編寫Shell腳本一鍵安裝JDK 8
任務(wù)1.1.5 編寫Shell腳本監(jiān)控Linux系統(tǒng)性能 9
任務(wù)1.2 使用Python提升系統(tǒng)自動化運維技能 13
任務(wù)要求 13
相關(guān)知識 13
1.2.1 Python簡介 13
1.2.2 Python的模塊、包與庫 14
1.2.3 Python與系統(tǒng)自動化運維 15
任務(wù)實現(xiàn) 15
任務(wù)1.2.1 搭建Python開發(fā)環(huán)境 15
任務(wù)1.2.2 編寫Python程序監(jiān)控Linux系統(tǒng)性能 18
任務(wù)1.3 使用Python執(zhí)行外部命令 23
任務(wù)要求 23
相關(guān)知識 23
1.3.1 subprocess模塊簡介 23
1.3.2 subprocess模塊的便利函數(shù) 23
1.3.3 subprocess模塊的Popen類 25
任務(wù)實現(xiàn) 26
任務(wù)1.3.1 使用subprocess模塊編程批量檢測主機在線狀態(tài) 26
任務(wù)1.3.2 編寫通用的外部命令執(zhí)行函數(shù) 27
項目小結(jié) 28
課后練習 28
項目實訓 29
實訓1 編寫Shell腳本監(jiān)控系統(tǒng)性能 29
實訓2 編寫Python腳本監(jiān)控系統(tǒng)負載 29
實訓3 使用subprocess模塊編程創(chuàng)建Linux用戶賬戶 29
項目2 監(jiān)控系統(tǒng)與調(diào)度運維任務(wù) 30
知識目標 30
技能目標 30
素養(yǎng)目標 30
任務(wù)2.1 采集系統(tǒng)信息和管理進程 30
任務(wù)要求 30
相關(guān)知識 31
2.1.1 了解psutil庫 31
2.1.2 系統(tǒng)信息相關(guān)函數(shù) 31
2.1.3 進程管理功能 33
任務(wù)實現(xiàn) 34
任務(wù)2.1.1 使用psutil庫采集系統(tǒng)信息 34
任務(wù)2.1.2 使用psutil庫實現(xiàn)進程管理 37
任務(wù)2.2 監(jiān)控文件系統(tǒng)更改 37
任務(wù)要求 37
相關(guān)知識 38
2.2.1 了解pyinotify庫 38
2.2.2 了解watchdog庫 40
任務(wù)實現(xiàn) 42
任務(wù)2.2.1 基于pyinotify庫編寫文件系統(tǒng)更改監(jiān)控程序 42
任務(wù)2.2.2 基于watchdog庫編寫文件系統(tǒng)更改監(jiān)控程序 43
任務(wù)2.3 監(jiān)控Web服務(wù) 45
任務(wù)要求 45
相關(guān)知識 45
2.3.1 PycURL庫簡介 45
2.3.2 PycURL庫的基本用法 46
任務(wù)實現(xiàn) 48
基于PycURL庫編寫Web服務(wù)監(jiān)控程序 48
任務(wù)2.4 調(diào)度運維任務(wù) 50
任務(wù)要求 50
相關(guān)知識 50
2.4.1 APScheduler庫的組件 50
2.4.2 APScheduler庫的基本用法 51
任務(wù)實現(xiàn) 54
任務(wù)2.4.1 使用Cron服務(wù)調(diào)度運維任務(wù) 54
任務(wù)2.4.2 基于APScheduler庫編程調(diào)度運維
任務(wù) 54
項目小結(jié) 55
課后練習 55
項目實訓 56
實訓1 使用psutil庫編程獲取系統(tǒng)啟動時間和登錄信息 56
實訓2 使用watchdog庫編程監(jiān)控文件的移動 56
實訓3 使用PycURL庫編程判斷Web服務(wù)的可用性 57
實訓4 使用APScheduler庫編程調(diào)度監(jiān)控任務(wù) 57
項目3 處理文件內(nèi)容與配置文件 58
知識目標 58
技能目標 58
素養(yǎng)目標 58
任務(wù)3.1 解析和處理文件內(nèi)容 58
任務(wù)要求 58
相關(guān)知識 59
3.1.1 字符串及其操作 59
3.1.2 文本文件的讀寫 60
3.1.3 編碼和解碼 61
3.1.4 正則表達式 62
任務(wù)實現(xiàn) 65
任務(wù)3.1.1 統(tǒng)計用戶賬戶 65
任務(wù)3.1.2 查看配置文件并去除注釋和空行 66
任務(wù)3.2 操作配置文件 67
任務(wù)要求 67
相關(guān)知識 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
任務(wù)實現(xiàn) 72
任務(wù)3.2.1 編程操作INI文件 72
任務(wù)3.2.2 使用DOM方法讀寫XML文件 73
任務(wù)3.2.3 編程操作JSON文件 74
任務(wù)3.2.4 編程操作YAML文件 75
任務(wù)3.3 使用模板高效處理文本文件 76
任務(wù)要求 76
相關(guān)知識 76
3.3.1 什么是模板 76
3.3.2 Jinja2模板語法 77
3.3.3 Jinja2模板的渲染 78
任務(wù)實現(xiàn) 79
任務(wù)3.3.1 使用Jinja2模板生成HTML文件 79
任務(wù)3.3.2 使用Jinja2模板生成XML文件 80
任務(wù)3.4 比對文件和目錄內(nèi)容 81
任務(wù)要求 81
相關(guān)知識 81
3.4.1 difflib模塊 81
3.4.2 filecmp模塊 82
任務(wù)實現(xiàn) 83
任務(wù)3.4.1 使用difflib模塊編程比較兩個文件
內(nèi)容 83
任務(wù)3.4.2 使用filecmp模塊編程比較兩個目錄
內(nèi)容 84
項目小結(jié) 85
課后練習 86
項目實訓 87
實訓1 獲取網(wǎng)頁中所有圖片的鏈接 87
實訓2 編寫將XML文件轉(zhuǎn)換為YAML文件的Python程序 87
實訓3 使用Jinja2模板生成HTML報表 87
項目4 記錄日志與發(fā)送郵件 88
知識目標 88
技能目標 88
素養(yǎng)目標 88
任務(wù)4.1 記錄日志 88
任務(wù)要求 88
相關(guān)知識 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
任務(wù)實現(xiàn) 94
任務(wù)4.1.1 將日志消息同時輸出到屏幕和文件 94
任務(wù)4.1.2 使用日志文件記錄異常處理信息 95
任務(wù)4.1.3 使用日志記錄系統(tǒng)監(jiān)控異常信息 96
任務(wù)4.2 發(fā)送郵件 97
任務(wù)要求 97
相關(guān)知識 97
4.2.1 smtplib模塊及其基本用法 97
4.2.2 email模塊及其基本用法 98
任務(wù)實現(xiàn) 100
任務(wù)4.2.1 通過郵件發(fā)送報警通知 100
任務(wù)4.2.2 通過郵件發(fā)送運維報告 102
項目小結(jié) 103
課后練習 103
項目實訓 104
實訓1 使用日志記錄文件刪除和移動監(jiān)控的信息 104
實訓2 監(jiān)控文件刪除和移動并發(fā)送郵件通知 104
項目5 運維數(shù)據(jù)記錄與可視化 105
知識目標 105
技能目標 105
素養(yǎng)目標 105
任務(wù)5.1 記錄運維數(shù)據(jù) 105
任務(wù)要求 105
相關(guān)知識 106
5.1.1 純文本的CSV文件 106
5.1.2 功能強大的Excel文件 106
5.1.3 使用數(shù)據(jù)庫存儲 109
任務(wù)實現(xiàn) 110
任務(wù)5.1.1 使用CSV文件記錄系統(tǒng)監(jiān)控數(shù)據(jù) 110
任務(wù)5.1.2 使用SQLite數(shù)據(jù)庫記錄系統(tǒng)監(jiān)控數(shù)據(jù) 112
任務(wù)5.2 可視化運維數(shù)據(jù) 114
任務(wù)要求 114
相關(guān)知識 115
5.2.1 經(jīng)典的Python繪圖庫Matplotlib 115
5.2.2 高效、簡潔的Web可視化框架Dash 116
任務(wù)實現(xiàn) 121
任務(wù)5.2.1 基于Matplotlib庫生成系統(tǒng)監(jiān)控數(shù)據(jù)統(tǒng)計圖表 121
任務(wù)5.2.2 通過Dash框架實現(xiàn)系統(tǒng)監(jiān)控數(shù)據(jù)儀表盤 123
項目小結(jié) 127
課后練習 127
項目實訓 128
實訓1 使用Excel文件記錄系統(tǒng)監(jiān)控數(shù)據(jù)并繪制CPU使用率的折線圖 128
實訓2 基于Dash框架繪制CPU和內(nèi)存使用率的柱形圖 128
項目6 遠程管理和批量運維服務(wù)器 129
知識目標 129
技能目標 129
素養(yǎng)目標 129
任務(wù)6.1 使用Paramiko庫遠程管理服務(wù)器 129
任務(wù)要求 129
相關(guān)知識 130
6.1.1 SSH協(xié)議 130
6.1.2 Paramiko庫簡介 130
6.1.3 使用SSHClient類建立SSH連接 131
6.1.4 使用Transport類控制SSH連接 132
6.1.5 使用SFTPClient實現(xiàn)文件傳輸 133
任務(wù)實現(xiàn) 134
任務(wù)6.1.1 搭建多服務(wù)器實驗環(huán)境 134
任務(wù)6.1.2 基于密鑰認證連接遠程服務(wù)器 135
任務(wù)6.1.3 在遠程服務(wù)器上執(zhí)行sudo命令 137
任務(wù)6.1.4 實現(xiàn)交互式操作的遠程偽終端 138
任務(wù)6.2 使用Fabric庫批量管理和運維服務(wù)器 139
任務(wù)要求 139
相關(guān)知識 140
6.2.1 Fabric庫簡介 140
6.2.2 Connection類的基本用法 140
6.2.3 為sudo命令自動提供密碼 143
6.2.4 批量操作遠程服務(wù)器 143
6.2.5 傳統(tǒng)的fab命令行工具 145
任務(wù)實現(xiàn) 145
任務(wù)6.2.1 批量部署源代碼 145
任務(wù)6.2.2 集中采集多臺服務(wù)器的系統(tǒng)信息 147
任務(wù)6.2.3 自動部署LAMP平臺 148
項目小結(jié) 150
課后練習 150
項目實訓 151
實訓1 使用Paramiko庫編程實現(xiàn)基于密鑰認證的SSH客戶端 151
實訓2 使用Fabric庫編程實現(xiàn)批量采集服務(wù)器的網(wǎng)絡(luò)流量信息 151
實訓3 使用Fabric庫編程實現(xiàn)自動安裝Docker CE 152
項目7 網(wǎng)絡(luò)管理和網(wǎng)絡(luò)安全 153
知識目標 153
技能目標 153
素養(yǎng)目標 153
任務(wù)7.1 IP地址管理與DNS解析 153
任務(wù)要求 153
相關(guān)知識 154
7.1.1 IPy庫及其基本用法 154
7.1.2 dnspython庫及其基本用法 156
任務(wù)實現(xiàn) 157
任務(wù)7.1.1 使用IPy庫解析IP地址 157
任務(wù)7.1.2 使用dnspython庫解析DNS記錄 158
任務(wù)7.2 實現(xiàn)網(wǎng)絡(luò)探測和安全掃描 159
任務(wù)要求 159
相關(guān)知識 160
7.2.1 nmap工具 160
7.2.2 python-nmap庫 164
任務(wù)實現(xiàn) 166
任務(wù)7.2.1 檢測網(wǎng)絡(luò)中在線狀態(tài)的主機 166
任務(wù)7.2.2 檢測主機的服務(wù)及版本 166
任務(wù)7.3 使用Scapy庫處理網(wǎng)絡(luò)數(shù)據(jù)包 167
任務(wù)要求 167
相關(guān)知識 168
7.3.1 Scapy庫簡介 168
7.3.2 Scapy庫的基本使用方法 168
任務(wù)實現(xiàn) 174
任務(wù)7.3.1 使用Scapy庫進行SYN掃描 174
任務(wù)7.3.2 使用Scapy庫進行TCP路由跟蹤 175
任務(wù)7.3.3 使用Scapy庫進行抓包重放 175
項目小結(jié) 177
課后練習 177
項目實訓 178
實訓1 檢測主機的服務(wù)及版本并將結(jié)果生成HTML報表 178
實訓2 使用Scapy庫抓取網(wǎng)絡(luò)數(shù)據(jù)包并進行處理 178
項目8 企業(yè)級系統(tǒng)綜合運維 179
知識目標 179
技能目標 179
素養(yǎng)目標 179
任務(wù)8.1 熟悉Ansible的基本用法 179
任務(wù)要求 179
相關(guān)知識 180
8.1.1 Ansible的特點和應(yīng)用 180
8.1.2 Ansible的基本架構(gòu) 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 命令執(zhí)行模塊 187
任務(wù)實現(xiàn) 187
任務(wù)8.1.1 使用Ansible在目標主機上執(zhí)行Shell腳本 187
任務(wù)8.1.2 使用Ansible提權(quán)操作目標主機 190
任務(wù)8.2 基于Playbook實現(xiàn)自動化任務(wù) 190
任務(wù)要求 190
相關(guān)知識 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中使用控制結(jié)構(gòu) 197
8.2.6 使用Ansible Vault加密內(nèi)容 198
任務(wù)實現(xiàn) 200
任務(wù)8.2.1 使用Playbook配置系統(tǒng)時鐘同步 200
任務(wù)8.2.2 使用Playbook批量添加用戶賬戶 202
任務(wù)8.3 使用Ansible角色組織Playbook 204
任務(wù)要求 204
相關(guān)知識 204
8.3.1 理解Ansible角色 204
8.3.2 使用Ansible Galaxy 208
任務(wù)實現(xiàn) 210
任務(wù)8.3.1 通過角色部署Web負載平衡 210
任務(wù)8.3.2 通過Ansible Galaxy部署角色 216
任務(wù)8.4 部署Zabbix監(jiān)控平臺 218
任務(wù)要求 218
相關(guān)知識 218
8.4.1 Zabbix的主要特性 218
8.4.2 Zabbix的基本架構(gòu) 219
任務(wù)實現(xiàn) 219
任務(wù)8.4.1 以容器形式安裝Zabbix服務(wù)器 219
任務(wù)8.4.2 使用Ansible部署Zabbix代理 222
任務(wù)8.4.3 試用Zabbix實現(xiàn)系統(tǒng)監(jiān)控 225
項目小結(jié) 227
課后練習 228
項目實訓 229
實訓1 使用Ansible即席命令執(zhí)行Shell腳本檢測目標主機的CPU使用率 229
實訓2 使用Playbook批量更改CentOS的系統(tǒng)環(huán)境配置 229
實訓3 從Ansible Galaxy獲取Redis角色并在CentOS服務(wù)器上部署 230