Skip to content

Latest commit

 

History

History
136 lines (76 loc) · 11.6 KB

File metadata and controls

136 lines (76 loc) · 11.6 KB

零、前言

本书首先介绍了 Python 环境的设置,以执行自动化任务,以及您将使用的模块、库和工具。

我们将使用简单的 Python 程序和 Ansible 探索网络自动化任务的示例。接下来,我们将指导您使用 PythonFabric 自动化管理任务,您将学习执行服务器配置和管理以及系统管理任务,如用户管理、数据库管理和进程管理。在阅读本书的过程中,您将使用 Python 脚本自动化多个测试服务,并使用 Python 在虚拟机和云基础设施上执行自动化任务。在最后几章中,您将介绍基于 Python 的攻击性安全工具,并学习自动执行安全任务。

在本书结束时,您将掌握使用 Python 自动化多个系统管理任务的技能。

You can visit the author's blog at the following link: https://basimaly.wordpress.com/.

这本书是给谁的

带 Python 的实用企业自动化**适用于系统管理员和 DevOps 工程师,他们正在寻找主要自动化框架(如 Puppet 和 Chef)的替代方案。必须具备 Python 和 Linux shell 脚本的基本编程知识。

*# 这本书涵盖的内容

第一章设置 Python 环境探讨了如何下载并安装 Python 解释器以及 Python 集成开发环境*JetBrains PyCharm。*IDE 为您提供智能自动完成、智能代码分析、强大的重构功能,并与 Git、virtualenv、Vagrant 和 Docker 集成。这将帮助您编写专业且健壮的 Python 代码。

第 2 章自动化中使用的公共库介绍了目前可用的用于自动化的 Python 库。我们将根据它们的使用情况(系统、网络和云)对它们进行分类,并提供一个简单的介绍。在阅读本书的过程中,你会发现自己深入研究了其中的每一项,并了解它们的用法。

第 3 章设置您的网络实验室环境,讨论网络自动化的优点以及网络运营商今天如何使用它来自动化当前设备。我们将探索目前用于从 Cisco、Juniper 和 Arista 自动化网络节点的流行库。本章介绍如何构建一个网络实验室来应用 Python 脚本。我们将使用名为 EVE-NG 的开源网络仿真工具。

第 4 章使用 Python 管理网络设备,深入到使用 netmiko、paramiko 和 telnetlib 通过 telnet 和 SSH 连接管理网络设备。我们将学习如何编写 Python 代码来访问交换机和路由器,并在终端上执行命令,然后返回输出。我们还将学习如何利用不同的 Python 技术来备份和推送配置。本章最后介绍了现代网络环境中使用的一些用例。

第 5 章从网络设备中提取有用数据,说明如何使用 Python 内部的不同工具和技术从返回的输出中提取有用数据并对其进行操作。此外,我们将使用一个名为CiscoConfParse的特殊库来审核配置。然后,我们将学习如何使用 matplotlib 可视化数据以生成吸引人的图形和报告。

第 6 章配置生成器结合 Python 和 Jinja2说明了如何为一个拥有数百个网络节点的站点生成通用配置。我们将学习如何编写模板,并使用名为 Jinja2 的模板语言生成黄金配置。

第 7 章Python 脚本的并行执行,介绍了如何并行实例化和执行 Python 代码。这将允许我们更快地完成自动化工作流,只要它不是相互依赖的。

第 8 章准备实验室环境介绍了我们实验室环境的安装过程和准备工作。我们将通过不同的虚拟机监控程序在 CentOS 或 Ubuntu 中安装自动化服务器。然后我们将学习如何使用Cobbler自动安装操作系统。

第 9 章使用子流程模块说明如何将 Python 脚本中的命令直接发送到操作系统外壳,并调查返回的输出。

第 10 章使用 Fabric运行系统管理任务,介绍 Fabric,它是一个通过 SSH 执行系统管理任务的 Python 库。此外,它还用于大型应用程序部署。我们将学习如何利用和利用此库在远程服务器上执行任务。

第 11 章生成系统报告管理用户、系统监控说明从系统中收集数据并生成定期报告是任何系统管理员的基本任务,自动化这项任务将帮助您尽早发现问题并提供解决方案。在本章中,我们将看到一些经过验证的自动化服务器数据收集和生成正式报告的方法。我们将学习如何使用 Python 和 Ansible 管理新用户和现有用户。此外,我们还将深入讨论监控系统 KPI 和日志分析。您还可以计划定期运行监视脚本,并将结果发送到您的邮件收件箱。

第 12 章与数据库交互说明,如果您是数据库管理员或数据库开发人员,那么 Python 提供了广泛的库和模块,涵盖管理和使用流行的 DBMS,如 MySQL、Postgress 和 Oracle。在本章中,我们将学习如何使用 Python 连接器与 DBMS 交互。

第 13 章负责系统管理,探讨了配置管理软件中最强大的工具之一。Ansible 在系统管理方面非常强大,可用于确保在数百台甚至数千台服务器上同时复制配置。

第 14 章创建和管理 VMWare 虚拟机介绍了如何在 VMWare 虚拟机监控程序上自动创建 VM。我们将发现使用 VMWare 的官方绑定库通过 ESXi 创建和管理虚拟机的不同方法。

第 15 章与 Openstack API交互,解释了 Openstack 在私有云上创建私有 IaaS 时非常流行。我们将使用 Python 模块,如请求来创建 REST 调用,并与 OpenStack 服务(如 nova、cinder 和 Neuton)交互,并通过 OpenStack 创建所需的资源。在本章后面,我们将使用 Ansible playbooks 实现相同的工作流。**

**第 16 章使用 Python 和 Boto3自动化 AWS,介绍了如何使用官方 Amazon binindgs(Boto3)自动化 EC2 和 S3 等常见 AWS 服务,后者为服务访问提供了易于使用的 API。

第 17 章使用 SCAPY 框架介绍了 SCAPY,这是一个功能强大的 Python 工具,用于构建和制作数据包,然后通过网络发送。您可以构建任何类型的网络流,并通过网络发送。它还可以帮助您捕获网络数据包并将其重播到网络上。

第 18 章使用 Python 构建网络扫描仪提供了使用 Python 构建网络扫描仪的完整示例。您可以扫描不同协议和端口的完整子网,并为每个扫描的主机生成报告。然后,我们将学习如何利用 Git 与开源社区(GitHub)共享代码。

充分利用这本书

读者应熟悉 Python 编程语言的基本编程范例,并应具备 Linux 和 Linux shell 脚本的基本知识。

下载示例代码文件

您可以从您的账户www.packtpub.com下载本书的示例代码文件。如果您在其他地方购买了本书,您可以访问www.packtpub.com/support并注册,将文件通过电子邮件直接发送给您。

您可以通过以下步骤下载代码文件:

  1. 登录或注册www.packtpub.com
  2. 选择“支持”选项卡。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入图书名称,然后按照屏幕上的说明进行操作。

下载文件后,请确保使用以下最新版本解压或解压缩文件夹:

  • WinRAR/7-Zip for Windows
  • 适用于 Mac 的 Zipeg/iZip/UnRarX
  • 适用于 Linux 的 7-Zip/PeaZip

该书的代码包也托管在 GitHub 上的https://github.com/PacktPublishing/Hands-On-Enterprise-Automation-with-Python 。如果代码有更新,它将在现有 GitHub 存储库中更新。

我们的丰富书籍和视频目录中还有其他代码包,请访问**https://github.com/PacktPublishing/** 。看看他们!

下载彩色图像

我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。您可以在这里下载:http://www.packtpub.com/sites/default/files/downloads/HandsOnEnterpriseAutomationwithPython_ColorImages.pdf

使用的惯例

本书中使用了许多文本约定。

CodeInText:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。下面是一个例子:“一些大型软件包,如matplotlibdjango中有数百个模块,开发人员通常将相关模块分类到子目录中。”

代码块设置如下:

from netmiko import ConnectHandler
from devices import R1,SW1,SW2,SW3,SW4

nodes = [R1,SW1,SW2,SW3,SW4]

for device in nodes:
    net_connect = ConnectHandler(**device)
    output = net_connect.send_command("show run")
    print output

当我们希望提请您注意代码块的特定部分时,相关行或项目以粗体显示:

hostname {{hostname}}

任何命令行输入或输出的编写方式如下:

pip install jinja2 

粗体:表示一个新术语、一个重要单词或您在屏幕上看到的单词。例如,菜单或对话框中的单词出现在文本中,如下所示。以下是一个例子:

从下载页选择您的平台,以及 x86 或 x64 版本

Warnings or important notes appear like this. Tips and tricks appear like this.

联系

我们欢迎读者的反馈。

一般反馈:发送电子邮件[email protected]并在邮件主题中提及书名。如果您对本书的任何方面有疑问,请发送电子邮件至[email protected]

勘误表:尽管我们已尽一切努力确保内容的准确性,但还是会出现错误。如果您在本书中发现错误,如果您能向我们报告,我们将不胜感激。请访问www.packtpub.com/submit-errata,选择您的书籍,点击 errata 提交表单链接,然后输入详细信息。

盗版:如果您在互联网上发现我们作品的任何形式的非法复制品,请您提供我们的位置地址或网站名称,我们将不胜感激。请通过[email protected]与我们联系,并提供该材料的链接。

如果您有兴趣成为一名作家:如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请访问authors.packtpub.com

评论

请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在读者可以看到并使用您的无偏见意见做出购买决定,我们 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们书籍的反馈。非常感谢。

有关 Packt 的更多信息,请访问packtpub.com。***