Linux系統自動化運維(Python版)(微課版)

張莉,丁傳煒

  • 出版商: 人民郵電
  • 出版日期: 2024-01-01
  • 定價: $359
  • 售價: 8.5$305
  • 語言: 簡體中文
  • 頁數: 230
  • ISBN: 7115628246
  • ISBN-13: 9787115628244
  • 相關分類: Linux
  • 下單後立即進貨 (約4週~6週)

  • Linux系統自動化運維(Python版)(微課版)-preview-1
  • Linux系統自動化運維(Python版)(微課版)-preview-2
Linux系統自動化運維(Python版)(微課版)-preview-1

買這商品的人也買了...

商品描述

本書主要講解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