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