本書的目的在讓你瞭解,管理 Unix 和 Linux 伺服器的時候,Python 語言將能夠讓你以更有效率的方式來完成各項任務。本書的每一章會探討一個特定的主題,例如並行性或資料備份,而且會透過現成的範例來介紹 Python 的解決方案。你將學會如何使用 Python 開發自己的命令列工具,以便解決各式各樣的問題。
本書作者還提供了一個可自由下載的 Ubuntu 虛擬機映像,其中包含了本書的範例原始碼,以及 SNMP、IPython、SQLAlchemy 和許多其他公用程式的執行範例。
閱讀本書,你將發現 Python 能夠協助你:
* 讀取文字檔以及從中提取資訊
* 透過執行緒(threading)和派生(forking)同時執行多個任務
* 使用網路工具從一個行程讀取另一個行程的資訊
* 建立易於操作的可點選 GUI 程式
* 透過 SNMP 監控大型機器群集
* 掌握 IPython shell 用於取代 Bash、Korn 或 Z-Shell,或是替它們增添功能
* 把雲端計算(Cloud Computing)整合進你的基礎架構,以及撰寫 Google App Engine 應用程式
* 使用自定義的命令稿來解決獨特的資料備份問題
* 使用 Django、SQLAlchemy 以及 Storm ORM 來操作資料庫
使用本書以及作者所提供的 Ubuntu 虛擬機映像,你將學會如何包裝與部署你的 Python 應用程式和程式庫,以及撰寫可以在多種 Unix 和 Linux 平台上執行的程式。
作者簡介:
Noah Gift 有十年以上的 Unix 和 Linux 使用經驗,他任職過的公司包括 Caltech、Disney Feature Animation 和 Turner Studios。他現在是 Giftcs 和 Cloud Seed Software 等公司的合夥人。
Jeremy M. Jones 是 Predictix 的軟體工程師,也是 Munkware、ediplex 和 podgrabber 等開放原碼專案的作者。
各界推薦
名人推薦:
『無論你是否曾撰寫過 shell 命令稿,或是一個 Python 的新手,本書都適合你。Jeremy 和 Noah 細心地替範例程式碼的實際應用提供了合理的說明。許多探討程式設計的書籍往往會讓新手不知所措,不過《Python 的 Unix/Linux 系統管理應用》卻可以看到它處處替新手著想的用心。』
— Ruth Suehle 與 Bascha Harris,Red Hat 雜誌
名人推薦:『無論你是否曾撰寫過 shell 命令稿,或是一個 Python 的新手,本書都適合你。Jeremy 和 Noah 細心地替範例程式碼的實際應用提供了合理的說明。許多探討程式設計的書籍往往會讓新手不知所措,不過《Python 的 Unix/Linux 系統管理應用》卻可以看到它處處替新手著想的用心。』
— Ruth Suehle 與 Bascha Harris,Red Hat 雜誌
目錄
他序
自序
第一章 簡介
1.1 為什麼使用 Python?
1.2 動機
1.3 基礎知識
1.4 在 Python 中執行命令述句
1.5 在 Python 中使用函式
1.6 使用 Import 述句的可重用程式碼
第二章 IPython
2.1 安裝 IPython
2.2 基本概念
2.3 magic 函式
2.4 Unix shell
2.5 資訊的收集
2.6 自動化與捷徑
2.7 結語
第三章 文字
3.1 Python 的內建型別與模組
3.2 日誌檔的剖析
3.3 ElementTree
3.4 結語
第四章 文件與報告
4.1 自動收集資訊
4.2 手動收集資訊
4.3 資訊的編排
4.4 資訊的散佈
4.5 結語
第五章 連網
5.1 網路用戶端
5.2 遠端程序呼叫
5.3 SSH
5.4 Twisted
5.5 Scapy
5.6 使用 Scapy 建立命令稿
第六章 資料
6.1 介紹
6.2 使用 os 模組進行資料的操作
6.3 對資料進行複製、移動、更名和刪除的操作
6.4 路徑、目錄和檔案的操作
6.5 比較資料
6.6 資料的合併
6.7 檔案和目錄名稱的樣式比對
6.8 rsync 包裹程式
6.9 中介資料:用於描述資料的資料
6.10 打包、壓縮、映像和回復
6.11 使用 tarfile 模組 來建立 TAR 包裝檔
6.12 使用 tarfile 模組來檢視 TAR 包裝檔的內容/dd>
第七章 SNMP
7.1 介紹
7.2 SNMP 簡介
7.3 IPython 與 Net-SNMP
7.4 探索資料中心
7.5 以 Net-SNMP 取回多個值
7.6 建立合併式 SNMP 工具
7.7 擴充 Net-SNMP
7.8 SNMP 裝置控制
7.9 使用 Zenoss 進行企業 SNMP 整合
第八章 作業系統
8.1 介紹
8.2 使用 Python 進行跨平台 Unix 程式設計
8.3 PyInotify
8.4 OS X
8.5 Red Hat Linux 系統的管理
8.6 Ubuntu 的管理
8.7 Solaris 系統的管理
8.8 虛擬化技術
8.9 雲端運算
8.10 從 Linux 以 Zenoss 來管理 Windows server
第九章 套件管理
9.1 介紹
9.2 setuptools 與 Python egg
9.3 使用 easy_install
9.4 easy_install 的進階功能
9.5 建立 egg
9.6 進入點與控制台命令稿
9.7 向 Python Package Index 註冊套件
9.8 distutils
9.9 Buildout
9.10 使用 Buildout
9.11 以 Buildout 進行開發
9.12 virtualenv
9.13 EPM 套件管理程式
第十章 行程與並行性
10.1 介紹
10.2 子行程
10.3 使用 Supervisor 來管理行程
10.4 使用 Screen 來管理行程
10.5 Python 中的執行緒
10.6 行程
10.7 processing 模組
10.8 Python 行程的排程
10.9 daemonize 函式
10.10 結語
第十一章 建構 GUI 程式
11.1 GUI 建構原理
11.2 建構一支簡單的 PyGTK 應用程式
11.3 使用 PyGTK 建構 Apache 日誌檔觀察器
11.4 使用 curses 建構 Apache 日誌檔觀察器
11.5 web 應用程式
11.6 Django
11.7 結語
第十二章 資料的存續
12.1 簡單序列化
12.2 關聯序列化
12.3 結語
第十三章 命令列
13.1 介紹
13.2 標準輸入的基本用法
13.3 介紹 optparse
13.4 簡單的 Optparse 使用模式
13.5 Unix mashups:將 Shell 命令整合進 Python 命令列工具
13.6 整合組態檔
13.7 結語
第十四章 實用範例
14.1 使用 Python 管理 DNS
14.2 透過 Python 來使用支援 LDAP 的 OpenLDAP、Active Directory 等等
14.3 Apache 日誌檔的報告
14.4 FTP Mirror
附錄 回呼函式
索引
他序
自序
第一章 簡介
1.1 為什麼使用 Python?
1.2 動機
1.3 基礎知識
1.4 在 Python 中執行命令述句
1.5 在 Python 中使用函式
1.6 使用 Import 述句的可重用程式碼
第二章 IPython
2.1 安裝 IPython
2.2 基本概念
2.3 magic 函式
2.4 Unix shell
2.5 資訊的收集
2.6 自動化與捷徑
2.7 結語
第三章 文字
3.1 Python 的內建型別與模組
3.2 日誌檔的剖析
3.3 ElementTree
3.4 結語
第四章 文件與報告
4.1 自動收集資訊
4.2 手動收集資訊
4.3 ...