| 作者 |
| [美] 埃里克·周(Eric Chou) |
| 丛书名 |
| 华章程序员书库 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787111630333 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书从使用者的角度出发编写,学习难度由简到难。首先简单回顾了TCP/IP协议和Python基础知识,然后探讨了如何使用Python管理网络设备,尤其是如何与传统的路由器和交换机进行通信。之后介绍了如何使用Python自动化框架Ansibel来实现批量系统配置、批量程序部署、批量运行命令等功能。介绍如何采用Python工具实现基础的网络安全管理,并介绍了如何使用Python进行网络监控、搭建Web服务,也介绍了其它的网络运维管理相关技术基础,如:git代码仓库的使用、Jenkins持续集成和网络的测试驱动开发等。本书包含的内容涉及到许多基础工具的使用,每个知识点都有示例代码,读者可以一边学习,一边实践。 |
| 目录 |
| 译者序 前言 关于作者 关于审稿人 第1章 回顾TCP/IP协议簇和Python 1 1.1 互联网概述 2 1.1.1 服务器、主机和网络组件 2 1.1.2 数据中心的兴起 3 1.2 OSI模型 5 1.3 客户端–服务器模型 6 1.4 网络协议簇 7 1.4.1 传输控制协议 7 1.4.2 用户数据报协议 8 1.4.3 互联网协议 9 1.5 Python语言概述 10 1.5.1 Python版本 11 1.5.2 操作系统 12 1.5.3 运行一个Python程序 12 1.5.4 Python内置类型 13 1.5.5 Python操作符 17 1.5.6 Python控制流工具 18 1.5.7 Python函数 19 1.5.8 Python类 19 1.5.9 Python模块和包 20 1.6 小结 21 第2章 低级网络设备交互 22 2.1 CLI面临的挑战 23 2.2 搭建虚拟实验 24 2.2.1 Cisco VIRL 25 2.2.2 Cisco DevNet和Cisco dCloud 28 2.2.3 GNS329 2.3 Python Pexpect 库30 2.3.1 Pexpect安装31 2.3.2 Pexpect概述31 2.3.3 第一个Pexpect程序35 2.3.4 Pexpect的更多功能36 2.3.5 Pexpect和SSH37 2.3.6 将Pexpect的所有内容都放到脚本中37 2.4 Python Paramiko库38 2.4.1 Paramiko安装39 2.4.2 Paramiko概述39 2.4.3 第一个Paramiko程序42 2.4.4 Paramiko的更多功能42 2.4.5 Paramiko可重用性44 2.5 展望45 2.6 小结46 第3章 API和意图驱动网络47 3.1 基础设施作为代码48 3.1.1 意图驱动网络48 3.1.2 屏幕抓取与API结构化输出49 3.1.3 基础设施的数据建模作为代码51 3.2 Cisco API和Cisco ACI52 3.2.1 Cisco NX-API 53 3.2.2 Cisco和YANG模型58 3.2.3 Cisco ACI58 3.3 Juniper网络的Python API60 3.3.1 Juniper和NETCONF61 3.3.2 开发者的Juniper PyEZ64 3.4 Arista Python API68 3.4.1 Arista eAPI管理68 3.4.2 Arista Pyeapi库72 3.5 厂商中立的库76 3.6 小结76 第4章 Python自动化框架—Ansible基础知识77 4.1 一个更具声明性的框架78 4.2 Ansible示例79 4.2.1 控制节点安装79 4.2.2 运行不同版本的Ansible源代码80 4.2.3 实验建立81 4.2.4 第一个Ansible playbook示例81 4.3 Ansible的优点85 4.3.1 无代理85 4.3.2 幂等性85 4.3.3 简单且可扩展86 4.3.4 网络供应商支持86 4.4 Ansible架构87 4.4.1 YAML88 4.4.2 清单89 4.4.3 变量90 4.4.4 使用Jinja2的模板93 4.5 Ansible网络模块93 4.5.1 本地连接和facts93 4.5.2 provider参数94 4.6 Ansible Cisco示例95 4.7 Ansible Juniper示例99 4.8 Ansible Arista示例101 4.9 小结102 第5章 Python自动化框架—进阶知识103 5.1 Ansible条件语句104 5.1.1 when子句104 5.1.2 Ansible网络facts106 5.1.3 网络模块的条件化108 5.2 Ansible循环109 5.2.1 标准循环109 5.2.2 循环字典110 5.3 模板112 5.3.1 Jinja2模板113 5.3.2 Jinja2循环114 5.3.3 Jinja2的条件化114 5.4 组变量和主机变量116 5.4.1 组变量117 5.4.2 主机变量118 5.5 Ansible Vault119 5.6 Ansible的include和角色120 5.6.1 Ansible的include语句120 5.6.2 Ansible的角色121 5.7 编写自定义Ansible模块124 5.7.1 第一个自定义模块125 5.7.2 第二个自定义模块127 5.8 小结128 第6章 Python下的网络安全129 6.1 搭建实验环境129 6.2 Python Scapy132 6.2.1 安装Scapy133 6.2.2 交互示例133 6.2.3 嗅探135 6.2.4 TCP端口扫描136 6.2.5 ping集合138 6.2.6 常见攻击139 6.2.7 Scapy资源140 6.3 访问列表140 6.3.1 使用Ansible实现访问列表141 6.3.2 MAC访问列表143 6.4 Syslog搜索144 6.5 其他工具147 6.5.1 专用VLAN147 6.5.2 使用Python的UFW147 6.5.3 延伸阅读148 6.6 小结148 第7章 Python下的网络监控—第一部分150 7.1 实验准备151 7.2 SNMP151 7.2.1 准备152 7.2.2 PySNMP154 7.3 用于数据可视化的Python159 7.3.1 Matplotlib 159 7.3.2 Pygal 165 7.4 用于Cacti的Python169 7.4.1 安装169 7.4.2 作为输入源的Python脚本170 7.5 小结172 第8章 Python下的网络监控—第二部分173 8.1 Graphviz174 8.1.1 实验准备174 8.1.2 安装176 8.1.3 Graphviz示例176 8.1.4 Python Graphviz示例178 8.1.5 LLDP邻居绘图178 8.2 基于流程的监控185 8.2.1 Python下的NetFlow解析185 8.2.2 ntop流量监视189 8.2.3 sFlow194 8.3 Elasticsearch(ELK堆栈)198 8.3.1 设置托管ELK服务198 8.3.2 Logstash格式199 8.3.3 Logstash格式的Python助手脚本200 8.4 小结202 第9章 使用Python构建网络Web服务203 9.1 Python Web相关框架比较204 9.2 Flask和实验设置206 9.3 Flask的相关介绍207 9.3.1 HTTPie客户端208 9.3.2 URL路由209 9.3.3 URL变量210 9.3.4 URL的生成211 9.3.5 jsonify返回值211 9.4 网络资源API212 9.4.1 Flask-SQLAlchemy212 9.4.2 网络内容API214 9.4.3 API设备216 9.4.4 API的设备ID218 9.5 网络动态操作218 9.6 安全223 9.7 其他资源225 9.8 小结226 第10章 AWS云网络227 10.1 AWS准备工作228 10.2 AWS网络概述231 10.3 虚拟私有云234 10.3.1 路由表和路由目标238 10.3.2 使用CloudFormation实现自动化239 10.3.3 安全组和网络ACL242 10.3.4 弹性IP244 10.3.5 NAT网关244 10.4 直连和VPN246 10.4.1 VPN网关246 10.4.2 直连247 10.5 网络扩展服务247 10.5.1 弹性负载平衡248 10.5.2 Route53 DNS服务248 10.5.3 CloudFront CDN服务249 10.6 其他AWS网络服务249 10.7 小结249 第11章 Git的使用251 11.1 Git简介252 11.1.1 Git的好处252 11.1.2 Git术语253 11.1.3 Git和GitHub254 11.2 设置Git254 11.3 Git用法示例255 11.4 在Python中使用Git267 11.4.1 GitPython267 11.4.2 PyGitHub268 11.5 自动配置备份269 11.6 与Git协作271 11.7 小结272 第12章 使用Jenkins持续集成273 12.1 传统的变更管理流程273 12.2 持续集成简介274 12.3 安装Jenkins275 12.4 Jenkins示例277 12.4.1 Python脚本的第一个作业278 12.4.2 Jenkins插件282 12.4.3 网络持续集成示例284 12.5 使用Python-Jenkins290 12.6 网络的持续集成292 12.7 小结292 第13章 网络的测试驱动开发293 13.1 测试驱动开发概述294 13.2 拓扑作为代码295 13.3 更多关于Python测试的信息301 13.4 编写网络测试304 13.4.1 测试可达性304 13.4.2 测试网络延迟305 13.4.3 测试安全性306 13.4.4 测试事务306 13.4.5 测试网络配置307 13.4.6 测试Ansible307 13.5 在Jenkins中使用pytest307 13.6 小结311 |