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