首页>参考读物>计算机科学与技术>计算机网络

Python Linux系统管理与自动化运维
作者 : 赖明星 著
出版日期 : 2017-09-08
ISBN : 978-7-111-57865-9
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 430
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书一共有11章,每一章都像一本迷你书,可以单独成册。读者可以从头开始阅读,也可以选择自己感兴趣的章节阅读。本书的大致分类如下:
第1章介绍了Python语言的优缺点和Python在Linux系统管理领域的应用,这一章主要在回答

图书特色

Python凭借其简单易学、语法优美、功能丰富等诸多优点,已经成为当下最流行的编程语言,从传统的Web开发、游戏开发、搜索引擎、系统运维,到最新的云计算、大数据、人工智能,Python都是核心技术之一。
作者被戏称为“网易最牛的Python程序员”,在平台开发、数据库、运维、网络爬虫等多个领域都有使用Python解决问题的丰富经验。本书是他多年实践的全面总结,不仅在系统管理和运维层面讲解了如何使用Python解决难题和提高效率,而且还从Python编程的角度讲解了如何编写高质量的Python代码。
如果你是系统管理运维人员,你将在网易这个高的起点上看到他们是如何利用Python工作的;如果你是一位Python程序员,本书将会从Python架构和代码质量的角度进一步提升你的编程水平。

图书前言

为何写作本书
我第一次接触Python是在2008年的时候,当时还是一名大学生。有一位非常优秀的学长通过《黑客与画家》这本书了解到Python语言,并且认为Python将在未来几年迅猛发展,在各个应用领域都会大有可为。因此,在国内还没有广泛使用Python语言时,这位学长便推荐我学习Python。现在的Python语言,流行程度已不用我多言,这一方面证实了Paul Graham(《黑客与画家》的作者)的远见卓识,同时,也反映出这位优秀学长的聪明睿智。从这件事中,我深切地感受到要多与人交流,尤其是要与那些比自己优秀的人交流。正是出于和大家交流的想法,我将这些年的Python使用心得,以及在网易云开发与运维的经验汇集成一本书,也就是你现在看到的这本书。
如果大家身处互联网,一定能够切身地感受到Python语言的流行程度。Python语言由于其简单易学、语法优美、应用领域广泛等诸多优点,俘获了大批的粉丝。通过Google搜索指数可以看到,Python语言在最近两年出现了爆发式的增长,其在编程语言排行榜上的排名,从第8名一跃上升到第4名,并且有继续上升的趋势。越来越多的公司高薪招聘Python工程师,越来越多的世界名校开始讲授Python语言,越来越多的项目使用Python语言进行开发。因此,从各个角度来说,Python都将大有可为,学习Python将是一个正确的选择。
伴随着云计算的高速发展,Python在系统管理领域也表现不俗。著名的云计算平台OpenStack就是使用Python语言开发的,各大云计算厂商也选择使用Python开发自己的内部系统。并且,由于云计算厂商托管的都是大规模服务器,为了提高运维效率、节约人力成本、快速响应需求,各大云计算厂商都不约而同地使用Python进行大规模服务器的部署和运维。
Python在Linux系统管理中,已经担任了非常重要的角色。但是,讲解Python在Linux系统管理中应用的书籍却寥寥无几,更多都是专注于Python语言、Python爬虫和Python Web开发。难得的几本也仅仅是介绍Python相关工具的使用而已。由于互联网业务的复杂性和多样性,这远不能满足互联网公司的需求,公司更希望工程师能够灵活地使用Python,根据业务需求开发自己的工具和系统。因此,本书不仅会介绍Python语言编写的系统管理工具,还会讲解如何使用Python构建自己的系统管理工具。
主要内容特色
本书介绍了Python语言在Linux系统管理中的应用,包括编写Python脚本管理Linux系统,使用Python编写的自动化工具管理Linux系统,以及使用Python打造专属的管理工具等。
本书以Linux系统管理为线索,以Python语言为载体,介绍了大量Python语言的应用案例。通过学习本书,不但可以使用Python语言管理Linux系统,也为Python解决其他领域问题打下了坚实的基础。书中每一章都会解决某一类问题,并且提供了问题的答案。如Python管理Linux文件和目录,使用Python监控Linux系统,使用Python编写自动化工具,使用Python进行自动化运维等。
通过学习本书,你可以:
掌握Python生态工具,提高自己的开发效率;
学会如何使用Python构建自己的命令行工具;
用Python编写可维护性更强的文本处理程序;
全方位监控Linux系统;
使用Python自动化部署应用;
管理操作系统配置;
使用Python打造MySQL专家系统;
通过Python发送电子邮件。
本书读者对象
本书不是一本讲解Python编程语言的书籍,也不是教授如何使用Python运维工具的书籍,而是一本讲解Python在Linux系统管理中应用的实战书籍。如果你还没学过Python编程语言,建议先学习Python语言以后,再来阅读本书。如果你从来没有使用过Linux,书中部分章节可能会让你感到困惑,不过依然有很多章节可以参考。因此,想要更好地学习本书内容,读者需要具备以下条件:
Python语言基础知识;
Linux使用经验;
了解SSH的使用。
本书虽然主要讲解Python在Linux系统管理中的应用,但是,书中很多例子都具有更加广泛的应用场景。本书的最大特色是提供了大量的实战案例,无论是刚学完Python语言,正在寻找Python实战案例的读者,还是想要学习Python在Linux系统管理中如何应用的读者,都能从中受益。
综上所述,本书适合以下几类读者:
使用Python语言的运维工程师;
想要提高Python技能的开发工程师;
想要了解Python在互联网应用的在校学生;
所有对Python实战感兴趣的读者。
如何阅读本书
本书共分11章,每一章都可以单独成册。你可以从头开始阅读,也可以选择自己感兴趣的章节阅读。
第1章介绍了Python语言的优缺点和Python在Linux系统管理领域的应用,这一章主要回答“为什么学习Python”这个问题。
第2章介绍了多个Python生态工具。充分利用这些工具,不但可以有效提高工作效率,还能形成统一的代码风格。此外,本章还会介绍如何解决Python中的环境依赖问题,包括如何在一台服务器上使用不同的Python版本,如何对不同的项目安装不同的依赖而不相互影响。相信通过学习本章介绍的工具,能够帮助你解决在学习Python过程中遇到的环境问题。
第3~7章主要讲解使用Python编写脚本管理Linux,包括如何使用Python构建命令行工具、如何使用Python处理文本问题、如何使用Python进行系统管理、如何使用Python监控Linux系统,以及如何使用Python处理文档与报告。这几章包含了大量的Python实战案例,如果你学习本书是为了提高自己的Python编程技能,可以重点学习这几章。
第8~10章主要介绍了多个Python语言开发的工具,包括网络嗅探工具Scapy、自动化部署工具Fabric和自动部署工具Ansible,这几章较偏重运维操作。灵活使用这几章介绍的工具,可以有效提高运维工程师的工作效率。Python语言之所以在系统管理和自动化运维领域使用广泛,是因为有很多使用Python语言开发的开源工具。这些工具简单易用、功能强大、扩展性强,是Linux系统管理员的得力助手。
第11章介绍了一个综合案例,即使用Python打造MySQL数据库专家系统。这一章颇有难度。书中使用数据库专家系统为载体,详细介绍了Python中的高级语言特性和Python中的系统架构。这一章不仅会用到比较深入的MySQL知识,还会用到Python的高级技巧。为了打造一个可读性好、可扩展性强的程序,我们使用了不少Python语言的高级特性。充分理解这一章介绍的Python语言高级特性,相信你的Python水平会有一个较大的提升。
需要强调的是,本书是一本实战类的书籍,因此,更多是强调实践的重要性。许多工程师学习Python,学完就忘,忘了再学,循环往复,都是因为实践不充分导致的。本书包含了大量的实战案例,可以作为Python的进阶教材,帮助你举一反三,编写自己的管理程序。
勘误和资源
为了便于实践,书中所有的代码都能够在GitHub上找到( https://github.com/lalor/python_for_linux_system_administration.git )。你可以在GitHub上查看代码,也可以下载到本地运行。
由于水平有限,加上时间仓促,书中难免出现一些不准确甚至错误的地方,恳请读者批评指正。在此,欢迎大家指出书中存在的问题,并提供指导性的意见,不甚感谢。如果你有任何与本书相关的内容需要与我探讨,都可以来本书源代码的Issue页面提问,也可以发邮件到me@mingxinglai.com,或者在知乎@mingxinglai与我联系,我都会及时回复。最后,衷心地希望本书能给大家带来帮助,并祝大家阅读愉快。
致谢
首先,我要感谢厦门大学林子雨老师和腾讯技术总监姜承尧老师。是林老师手把手指导我写论文,才让我具备了写作本书的能力;是姜老师的鼓励和支持,才让我有了写这本书的想法。没有你们的帮助和鼓励,是不可能有这本书的。此外,还要感谢网易技术总监余利华老师,是你构建了这个开放的工作环境,才让我有时间和精力来完成这本书。当然,还要感谢三位老师为本书作序。你们是我的人生榜样和奋斗目标,激励着我不断学习和进步,提醒自己时刻不能松懈。
其次,要感谢网易公司的各位同事们,尤其是RDS项目组和TNT项目组的同事们,能够与你们这样一群才华横溢、激情澎湃的同事一起工作,我感到非常的荣幸和兴奋。也因为在这个开放的工作环境中,我才可以不断进行研究和创新。感谢已经离职了的争神,你的一小部分优秀代码出现在了本书之中。还要感谢曾经一起讨论Python的小伙伴们,包括章洋、王中、李浩成、王新然、毛茂林、翟亮、陈王仡、刘刚、龚俊、戴晨、黄韬、孙旭东、刘云、钱毅、杨浩、李成、宗雅洁、舒雄、彭应龙等。
我还要感谢我的父亲和母亲,虽然他们在本书的写作过程中没有进行直接的帮助,但是,无论我做什么事情他们都无条件支持我,给予了我无条件的爱。我爱你们。
最后,一份特别的感谢要送给本书的策划编辑杨福川老师,你的专业水平和工作态度,给我留下了深刻印象。还要感谢编辑李艺老师,希望我的写作水平没有让你吃太多的苦。此外,还要感谢出版社其他默默工作的同事们。

上架指导

计算机\网络

封底文字

Python凭借其简单易学、语法优美、功能丰富等诸多优点,已经成为当下最流行的编程语言,从传统的Web开发、游戏开发、搜索引擎、系统运维,到最新的云计算、大数据、人工智能,Python都是核心技术之一。
作者被戏称为“网易最牛的Python程序员”,在平台开发、数据库、运维、网络爬虫等多个领域都有使用Python解决问题的丰富经验。本书是他在网易多年实践的总结,不仅在系统管理和运维层面讲解了如何使用Python来解决难题和提高效率,而其还从Python编程的角度讲解了如何编写高质量的Python代码。
如果你是系统管理和运维人员,你将在网易这个高的起点上看到他们是如何利用Python工作的;如果你是一位Python程序员,本书将会从Python架构和代码质量的角度进一步提升你的编程水平。

作者简介

赖明星 著:
赖明星 网易杭州研究院资深云平台开发工程师,曾担任网易数据库内核开发工程师和高级运维工程师。是网易云数据库MySQL云平台、MongoDB云平台的核心开发人员,以及网易大规模MySQL系统运维的负责人,独立完成MySQL存储引擎的TNT自动化研发和测试。

推荐序

Foreword?推 荐 序 一
Python是这个时代最流行的编程语言,不管你承认与否,Python已然被广泛应用到各个领域。从Web开发,到运维开发、搜索引擎,再到机器学习,甚至到游戏开发,没有什么是Python语言所不能的。特别是在当前这个云计算、大数据、机器学习、AI蓬勃发展的新时代,Python正扮演着越来越重要的角色。甚至可以说,作为一名IT从业人员,不论你是开发人员、DBA,抑或是前端开发人员,不会Python就很可能会被这个时代所抛弃。
作者赖明星是我在网易时期的同事兼好友,同事们都戏称其为“网易最牛Python程序员”。他不仅有着极其专业的开发能力与丰富的运维经验,更令我佩服和尊敬的是其充满传奇色彩的人生经历,以及在这种人生经历中的不断成长与永不放弃的坚毅精神。对此感兴趣的读者可以看其知乎上的文章与回复。
作者是IMG(Inside MySQL Group)社区的成员之一,对MySQL数据库有着深刻的理解。同时,作者多次在数据库大会上分享其在数据库方面的工作经验。IMG社区是一个专注于开源数据库技术,连接一切有态度的技术人员的社区。欢迎感兴趣的小伙伴加入这个社区,微信公众账号:InsideMySQL。若要加入微信群,请先加我个人微信号:82946772。
本书结合了作者丰富的实际工作案例,对Python语言做了大量的介绍,可以说是成为Pythonic最好的书籍。文章最后的MySQL专家系统亦是一个集大成的运维开发系统,同学们可以通过这个案例更好地理解Python在运维中的实际应用。最后,我将此书推荐给所有技术圈的同仁们,也希望大家早日体会到Pythonic的最高奥义。

姜承尧  
腾讯技术总监  




推 荐 序 二?Foreword
2010年前后,人类迎来了以云计算、大数据、物联网的普及为标志的第三次信息化浪潮,各行各业都在发生着深刻的变革。大数据成为企业提升核心竞争力的关键支撑,越来越多的企业将形成以数据为中心的运营模式,企业对大数据人才的需求正在迅速增长。
数据的采集预处理、存储管理、分析挖掘,是企业中的数据科学家和数据工程师们的核心工作,为了高效地完成上述工作,就需要IT技术人员掌握一门得心应手的编程语言,而Python就是能够满足这种需求的编程语言。Python语言自20世纪90年代初诞生至今,已被逐渐广泛应用于系统管理任务的处理、Web编程和数据挖掘等领域,是目前最受欢迎的编程语言之一。目前,国内的很多高校都在本科阶段开设了Python课程,高校的很多科研群体也都采用Python完成科学数据的分析工作,于是,掌握基本Python编程能力的高校毕业生将不断迈入工作岗位,成为企业中数据分析人才的中坚力量,Python在企业中的使用群体规模会不断扩大。此外,目前市场上流行的大数据处理框架(比如Spark),都支持采用Python进行程序开发,这使得学习者在掌握Python语言以后,能够较好地承担起企业大数据产品开发和系统运维等方面的工作。因此,无论在高校还是在企业,Python语言都已经形成了持续稳定的影响力,Python是学习者在编程语言方面的理想选择。
作者于2011年到2014年在厦门大学数据库实验室攻读硕士学位。在这三年时间里,实验室师生在大数据技术方面进行了系统的学习,以此为基础,实验室编著出版了国内高校第一本系统性介绍大数据知识的专业教材,建设了国内高校首个大数据课程公共服务平台,成为了国内高校大数据教学的知名品牌。在这个过程中,作者在大数据技术研究和学习方面,做出了巨大的努力,尤其是在Python语言方面有了初步的积累。作为导师,令我欣慰的是,作者在步入工作岗位以后,继续发扬了刻苦钻研的精神,不断提升Python语言的实践能力和水平,用Python语言解决了工作岗位中的大量业务问题。最终,作者根据自己丰富的行业实践经验,整理编写了这样一本具有较高实用价值的Python教程。
本书非常适合对一线互联网技术感兴趣的工程师、想要学习Python在Linux系统管理中如何应用的运维工程师,以及正在寻找Python进阶教程的Python爱好者进行阅读。相信这本书会成为读者们的良师益友。

林子雨  
厦门大学计算机科学系教师  




推 荐 序 三?Foreword
网易数据科学中心长期专注于数据库系统、搜索系统、大数据计算、BI等方向,致力于为整个网易集团提供领先的数据基础设施和技术解决方案。在部门十多年的发展过程中,我们一般使用两种语言,十年前我们用C++和Python,如今我们主要使用Java和Python。Java/C++是我们核心系统的开发语言,这两种语言都是当今最流行的编程语言,只有使用最流行的语言才能方便人员招聘、团队协作,从而达到长期维护的目的。随着IT行业的发展,Java替代C++成为了最流行语言,也成为了我们核心系统的开发语言,这是因为当前这个时代更加注重开发和维护效率,而非代码执行效率。Python语言则应用在Linux系统管理、MySQL系统管理等系统管理场景,Python简单优美、功能强大,在这些场景下可以秒杀Java/C++,因此始终是我们必学的编程语言。
市面上有不少讲解Python编程语言的书籍,也有不少关于Linux系统管理的书籍,但是介绍如何利用Python解决Linux系统管理问题的书籍却寥寥无几。作者赖明星是网易数据库专家,是数据库云服务(RDS)的核心开发人员。RDS产品使用Python语言成功管理了成千上万个Linux主机和MySQL实例,成功支撑了考拉、网易云音乐、网易新闻等大型互联网产品,在RDS研发运营过程中,作者积累了大量的一线工作经验和案例,并通过这本书分享给大家,希望对大家有所帮助。

余利华  
网易技术总监

图书目录

推荐序一
推荐序二
推荐序三
前 言
第1章 Python语言与Linux系统管理 1
1.1 Python语言有多流行 1
1.2 Python语言为什么流行 3
1.3 Python语言有什么缺点 4
1.4 Python语言的应用场景 4
1.5 为什么Python适合Linux系统管理 5
1.6 使用Python 2还是Python 3 6
第2章 Python生态工具 9
2.1 Python内置小工具 9
2.1.1 1秒钟启动一个下载服务器 10
2.1.2 字符串转换为JSON 10
2.1.3 检查第三方库是否正确安装 11
2.2 pip高级用法 12
2.2.1 pip介绍 12
2.2.2 pip常用命令 12
2.2.3 加速pip安装的技巧 14
2.3 Python编辑器 15
2.3.1 编写Python的vim插件 15
2.3.2 Windows下Python编辑器PyCharm介绍 17
2.4 Python编程辅助工具 18
2.4.1 Python交互式编程 18
2.4.2 使用IPython交互式编程 20
2.4.3 jupyter的使用 29
2.5 Python调试器 31
2.5.1 标准库的pdb 32
2.5.2 开源的ipdb 34
2.6 Python代码规范检查 34
2.6.1 PEP 8编码规范介绍 34
2.6.2 使用pycodestyle检查代码规范 36
2.6.3 使用autopep8将代码格式化 37
2.7 Python工作环境管理 39
2.7.1 使用pyenv管理不同的Python版本 39
2.7.2 使用virtualenv管理不同的项目 42
2.8 本章总结 43
第3章 打造命令行工具 44
3.1 与命令行相关的Python语言特性 44
3.1.1 使用sys.argv获取命令行参数 45
3.1.2 使用sys.stdin和fileinput读取标准输入 46
3.1.3 使用SystemExit异常打印错误信息 48
3.1.4 使用getpass库读取密码 49
3.2 使用ConfigParse解析配置文件 49
3.3 使用argparse解析命令行参数 52
3.3.1 ArgumentParse解析器 52
3.3.2 模仿MySQL客户端的命令行参数 54
3.4 使用logging记录日志 55
3.4.1 日志的作用 55
3.4.2 Python的logging模块 56
3.4.3 配置日志格式 56
3.5 与命令行相关的开源项目 59
3.5.1 使用click解析命令行参数 59
3.5.2 使用prompt_toolkit打造交互式命令行工具 61
3.6 本章总结 64
第4章 文本处理 65
4.1 字符串常量 66
4.1.1 定义字符串 66
4.1.2 字符串是不可变的有序集合 68
4.1.3 字符串函数 71
4.1.4 案例:使用Python分析Apache的访问日志 79
4.1.5 字符串格式化 83
4.2 正则表达式 85
4.2.1 正则表达式语法 86
4.2.2 利用re库处理正则表达式 87
4.2.3 常用的re方法 90
4.2.4 案例:获取HTML页面中的所有超链接 94
4.3 字符集编码 94
4.3.1 编码历史 95
4.3.2 UTF-8编码 96
4.3.3 从字符集的问题说起 98
4.3.4 Python 2和Python 3中的Unicode 99
4.4 Jinja2模板 101
4.4.1 模板介绍 102
4.4.2 Jinja2语法入门 102
4.4.3 Jinja2实战 108
4.4.4 案例:使用Jinja2生成HTML表格和XML配置文件 112
4.5 本章总结 116
第5章 Linux系统管理 117
5.1 文件读写 118
5.1.1 Python内置的open函数 118
5.1.2 避免文件句柄泄露 119
5.1.3 常见的文件操作函数 120
5.1.4 Python的文件是一个可迭代对象 121
5.1.5 案例:将文件中所有单词的首字母变成大写 122
5.2 文件与文件路径管理 123
5.2.1 使用os.path进行路径和文件管理 123
5.2.2 使用os模块管理文件和目录 126
5.2.3 案例:打印最常用的10条Linux命令 128
5.3 查找文件 129
5.3.1 使用fnmatch找到特定的文件 129
5.3.2 使用glob找到特定的文件 130
5.3.3 使用os.walk遍历目录树 131
5.3.4 案例:找到目录下最大(或最老)的十个文件 132
5.4 高级文件处理接口shutil 134
5.4.1 复制文件和文件夹 135
5.4.2 文件和文件夹的移动与改名 135
5.4.3 删除目录 136
5.5 文件内容管理 136
5.5.1 目录和文件比较 137
5.5.2 MD5校验和比较 139
5.5.3 案例:找到目录下的重复文件 139
5.6 使用Python管理压缩包 141
5.6.1 使用tarfile库读取与创建tar包 141
5.6.2 使用tarfile库读取与创建压缩包 142
5.6.3 案例:备份指定文件到压缩包中 142
5.6.4 使用zipfile库创建和读取zip压缩包 143
5.6.5 案例:暴力破解zip压缩包的密码 144
5.6.6 使用shutil创建和读取压缩包 146
5.7 Python中执行外部命令 148
5.7.1 subprocess模块简介 149
5.7.2 subprocess模块的便利函数 149
5.7.3 subprocess模块的Popen类 151
5.8 综合案例:使用Python部署MongoDB 152
5.9 本章总结 155
第6章 使用Python监控Linux系统 156
6.1 Python编写的监控工具 157
6.1.1 多功能系统资源统计工具dstat 157
6.1.2 交互式监控工具glances 160
6.2 使用Python打造自己的监控工具 163
6.2.1 Linux系统的/proc目录介绍 163
6.2.2 proc目录下常用文件介绍 164
6.2.3 进程目录下常用文件介绍 165
6.2.4 利用/proc目录找到被删除的文件 166
6.2.5 使用shell脚本监控Linux 168
6.2.6 使用Python监控Linux 170
6.3 使用开源库监控Linux 172
6.3.1 psutil介绍 172
6.3.2 psutil提供的功能函数 172
6.3.3 综合案例:使用psutil实现监控程序 177
6.3.4 psutil进程管理 180
6.4 使用pyinotify监控文件系统变化 181
6.4.1 pyinotify模块介绍 181
6.4.2 pyinotify模块API 182
6.4.3 事件标志与事件处理器 182
6.5 监控应用程序 184
6.5.1 使用Python监控MySQL 184
6.5.2 使用Python监控MongoDB 185
6.6 本章总结 185
第7章 文档与报告 186
7.1 使用Python处理Excel文档 187
7.1.1 openpyxl简介与安装 187
7.1.2 使用openpyxl读取Excel文档 187
7.1.3 使用openpyxl修改Excel文档 192
7.1.4 案例:合并多个Excel文档到一个Excel文档 195
7.2 使用Python操作PDF文档 197
7.2.1 PyPDF2安装与介绍 197
7.2.2 使用PdfFileReader读取PDF文件 198
7.2.3 使用PdfFileWriter创建PDF文件 199
7.2.4 修改PDF页面 201
7.2.5 使用PdfFileMerger合并多个PDF文件 203
7.3 使用Python归档图片 205
7.3.1 Exif信息介绍 205
7.3.2 在Python使用PIL查看图片元信息 207
7.4 发送报告 210
7.4.1 SMTP协议 211
7.4.2 邮箱设置(以QQ邮箱为例) 212
7.4.3 使用标准库的smtplib与mime发送邮件 212
7.4.4 使用开源的yagmail发送邮件 216
7.5 接收邮件 217
7.5.1 接收邮件协议IMAP与POP3 217
7.5.2 使用开源从imapclient接收邮件 217
7.5.3 使用pyzmail解析邮件 219
7.5.4 使用imapclient删除邮件 219
7.6 综合案例:使用Python打造一个geek的邮件客户端 220
7.6.1 emcli的功能设计 220
7.6.2 emcli的功能实现 221
7.6.3 使用setuptools打包源码 223
7.6.4 使用twine上传到PyPi 224
7.7 本章总结 225
第8章 网络 226
8.1 列出网络上所有活跃的主机 226
8.1.1 使用ping命令判断主机是否活跃 227
8.1.2 使用Python判断主机是否活跃 228
8.1.3 使用生产者消费者模型减少线程的数量 229
8.2 端口扫描 231
8.2.1 使用Python编写端口扫描器 232
8.2.2 使用nmap扫描端口 234
8.2.3 使用python-nmap进行端口扫描 237
8.3 使用IPy进行IP地址管理 238
8.3.1 IPy模块介绍 239
8.3.2 IPy模块的基本使用 239
8.3.3 网段管理 241
8.4 使用dnspython解析DNS 242
8.4.1 dnspython简介与安装 242
8.4.2 使用dnspython进行域名解析 242
8.5 网络嗅探器Scapy 244
8.5.1 Scapy简介与安装 245
8.5.2 Scapy的基本使用 245
8.5.3 使用Scapy发送数据报 247
8.5.4 使用Scapy构造DNS查询请求 248
8.5.5 使用Scapy进行网络嗅探 251
8.5.6 案例:使用Scapy嗅探信用卡信息 251
8.6 本章总结 252
第9章 Python自动化管理 253
9.1 使用SSH协议访问远程服务器 254
9.1.1 SSH协议 254
9.1.2 OpenSSH实现 254
9.1.3 使用密钥登录远程服务器 256
9.1.4 使用ssh-agent管理私钥 257
9.2 使用Polysh批量管理服务器 258
9.2.1 批量修改密码 259
9.2.2 Polysh的使用 260
9.3 SSH协议的Python实现paramiko 261
9.3.1 paramiko的安装 261
9.3.2 SSHClient类与SFTPClient类 261
9.3.3 paramiko的基本使用 262
9.3.4 使用paramiko部署监控程序 264
9.4 自动化部署工具Fabric 264
9.4.1 Fabric安装 265
9.4.2 Fabric使用入门 265
9.4.3 fab的命令行参数 267
9.4.4 Fabric的env字典 267
9.4.5 Fabric提供的命令 269
9.4.6 Fabric提供的上下文管理器 271
9.4.7 Fabric提供的装饰器 273
9.4.8 其他功能函数 277
9.4.9 使用Fabric源码安装redis 279
9.4.10 综合案例:使用Fabric部署Flask应用 280
9.5 本章总结 284
第10章 深入浅出Ansible 286
10.1 Ansible介绍 287
10.1.1 Ansible的优点 287
10.1.2 Ansible与Fabric之间比较 288
10.1.3 Ansible与SaltStack之间比较 289
10.2 Ansible使用入门 290
10.2.1 安装Ansible 290
10.2.2 Ansible的架构 290
10.2.3 Ansible的运行环境 291
10.2.4 Ansible的ad-hoc模式 292
10.2.5 使用playbook控制服务器 293
10.3 Inventory管理 294
10.3.1 hosts文件位置 294
10.3.2 灵活定义hosts文件内容 295
10.3.3 灵活匹配hosts文件内容 296
10.3.4 动态Inventory获取 297
10.3.5 Inventory行为参数 302
10.3.6 定义服务器变量 303
10.4 YAML语法 304
10.5 Ansible模块 308
10.5.1 Ansible的模块工作原理 308
10.5.2 模块列表与帮助信息 309
10.5.3 常用的Ansible模块 309
10.5.4 模块的返回值 318
10.6 Playbook 319
10.6.1 Playbook的定义 319
10.6.2 使用ansible-playbook
执行Playbook 322
10.6.3 Playbook的详细语法 324
10.6.4 使用Playbook部署nginx 331
10.6.5 使用Playbook部署MongoDB 334
10.6.6 Playbook中的高级语法 335
10.7 role的定义与使用 341
10.7.1 role的概念 341
10.7.2 使用ansible-galaxy命令管理role 342
10.7.3 如何使用role 343
10.7.4 使用role改造部署MongoDB的例子 344
10.8 Ansible的配置文件 345
10.8.1 配置文件的查找路径 345
10.8.2 Ansible中的常用配置 345
10.9 Ansible的最佳实践 346
10.9.1 Ansible的文件组织 346
10.9.2 Ansible最佳实践 348
10.9.3 使用role部署LAMP应用 349
10.10 本章总结 352
第11章 使用Python打造MySQL专家系统 354
11.1 Python语言高级特性 354
11.1.1 深入浅出Python生成器 355
11.1.2 深入浅出Python装饰器 360
11.1.3 Python上下文管理器 368
11.2 MySQL数据库 372
11.2.1 MySQL数据库介绍 372
11.2.2 Python连接数据库 373
11.2.3 使用MySQLdb访问MySQL数据库 375
11.2.4 使用上下文管理器对数据库连接进行管理 378
11.2.5 案例:从csv文件导入数据到MySQL 379
11.3 Python并发编程 381
11.3.1 Python中的多线程 381
11.3.2 线程同步与互斥锁 384
11.3.3 线程安全队列Queue 386
11.3.4 案例:使用Python打造一个MySQL压测工具 387
11.4 专家系统设计 390
11.4.1 专家系统使用 391
11.4.2 专家系统检查内容 391
11.4.3 如何进行数据库检查 392
11.4.4 专家系统评分体系 394
11.5 MySQL专家系统整体架构 396
11.5.1 专家系统架构设计 396
11.5.2 专家系统文件组织 398
11.6 数据库专家系统的客户端设计 400
11.6.1 实现数据库连接池 400
11.6.2 使用装饰器检查参数 402
11.6.3 利用Python的动态语言特性执行命令 403
11.6.4 利用__call__方法实现可调用对象 405
11.6.5 Python的property 407
11.7 数据库专家系统服务端设计 408
11.7.1 将相同的操作提升到父类中 408
11.7.2 在Python中实现map-reduce模型 409
11.7.3 利用动态语言特性实现工厂模式 411
11.8 本章总结 412

教学资源推荐
作者: Natalia Olifer; Victor Olifer
作者: Michael P. Papazoglou 著
作者: 吴功宜 吴英 编著
作者: Larry L.Peterson,Bruce S.Davie
参考读物推荐
作者: 王亮 编著
作者: 陈源 胡慧超 刘蕴如 等著
作者: 饶琛琳 编著