Python自动化运维快速入门(第2版)_郑征_AZW3_MOBI_EPUB_PDF_电子书(无页码)_郑征

内容节选

8.1介绍几个重要的类 8.1.1 通道类 通道(Channel)类是对SSH2 Channel的抽象类,是跨SSH传输的安全隧道。隧道的作用类似于套接字,并且与Python套接字API十分类似。因为SSHv2协议有一种流动窗口控制机制,如果停止从一个通道读取数据,并且这个通道的缓冲区已满,那么服务器将不会往此通道发送任何数据,但是这并不会影响同一传输上的其他通道(单个传输上的所有通道都是独立的流量控制通道)。类似地,如果服务器没有读取客户端发送的数据,那么客户端的发送调用可能会阻塞,除非设置了超时,这与正常的网络套接字完全一致。通道类的实例常用于上下文管理。 通道类提供的方法中常用的有以下几个。· close() :关闭Channel,关闭后任何对Channel的读写操作均会失败。远程节点将不能接收数据。Channel在传输完成或垃圾收集时自动关闭。 · exec_command(*args,**kwds):在服务端执行命令,如果服务端许可,则Channel将直接连接所执行命令的标准输入、标准输出及标准错误输出。当命令执行完毕后,channel将被关闭,并不再复用。如果想执行另一个命令,则需要新开一个Channel。当请求服务器被拒绝或Channel被关闭时,将抛出SSHException异常。 · exit_status_ready():该方法检查服务端进程是否退出,如果进程已经执行完并退出,则返回True,否则返回False。当程序不想在recv_exit_status方法中阻塞时,可以用此方法来拉取进程状态。 · recv_exit_status():从服务器上的进程返回退出状态。这对于检索exec_command的结果非常有用。如果命令还没有完成,这个方法将一直等到完成,或者直到通道关闭。如果exec_command运行结束,而服务器没有提供退出状态,则返回-1。 8.1.2 传输类 传输(Transport)类是核心协议的实现类,SSH传输连接到流(通常是套接字),协商加密的会话,进行身份验证,然后在会话之间创建流隧道(称为通道)。多个通道可以跨单个会话进行多路复用。Transport类的构造函数如下:__init__(sock, default_window_size=2097152, default_max_packet_size=32768,gss_kex=False, gss_deleg_creds=True) 构造函数在现有套接字或类似套接字的对象上创建新的SSH会话。它只会创建传输对象,并不启动SSH会话。使用connect或start_client方法启动客户端会话,或者使用start_server方法启动服务器会话。参数sock为一个套接字对象或类套接字对象,如果sock不是一个真正的套接字对象,那么它至少需要有以下方法。· send(str) :写入一定长度的字节数据到流中,返回写入流的字节数,如果流被关闭,则返回0或抛出EOFError异常。 · recv(int):从流中读取固定字节的数据,返回读取的字符串,如果流被关闭,则返回0或抛出EOFError异常。 · close():关闭对象。 · settimeout(n):设置I/O操作的超时时间。 为了便于使用,sock参数还可以传入元组(主机字符串,端口),一个套接字将连接到这个地址和端口并用于通信,使用方法如下所示。trans = paramiko.Transport(('192.168.195.129', 22)) 参数default_window_size设置默认的传输窗口的大小,default_max_packet_size设置默认的传输数据包的大小,这两个参数保持默认值与OpenSSH代码库中的值相同,并且经过严格测试,使用时一般不需要修改。 传输类提供的connect方法,其函数原型为:connect(hostkey=None, username='', password=None, pkey=None, gss_host=None,gss_auth=False, gss_kex=False, gss_deleg_creds=True, gss_trust_dns=True) 本方法启动一个SSH2会话,可以选择使用公钥或用户名、密码进行身份验证。使用方法如下:# 方法一 trans = paramiko.Transport(('192.168.195.129', 22)) # 建立连接,使用用户名及密码进行身份验证 trans.connect(username='aaron', password='aaron') #方法二 pkey = paramiko.RSAKey.from_private_key_file('/home/......

  1. 信息
  2. 内容简介
  3. 前言
  4. 第1章 自动化运维与Python
  5. 1.1 自动化运维概述
  6. 1.2 初识Python
  7. 1.3 Python环境搭建
  8. 1.4 开发工具介绍
  9. 1.5 Python基础语法
  10. 1.6 多个例子实战Python编程
  11. 1.7 pip工具的使用
  12. 第2章 基础运维技能
  13. 2.1 文本处理
  14. 2.2 系统信息监控
  15. 2.3 文件系统监控
  16. 2.4 执行外部命令subprocess
  17. 2.5 日志记录
  18. 2.6 搭建FTP服务器与客户端
  19. 2.7 邮件提醒
  20. 2.8 微信提醒
  21. 第3章 实战多进程
  22. 3.1 创建进程的类Process
  23. 3.2 进程并发控制之Semaphore
  24. 3.3 进程同步之Lock
  25. 3.4 进程同步之Event
  26. 3.5 进程优先级队列Queue
  27. 3.6 多进程之进程池Pool
  28. 3.7 多进程之数据交换Pipe
  29. 第4章 实战多线程
  30. 4.1 Python多线程简介
  31. 4.2 多线程编程之threading模块
  32. 4.3 多线程同步之Lock(互斥锁)
  33. 4.4 多线程同步之Semaphore(信号量)
  34. 4.5 多线程同步之Condition
  35. 4.6 多线程同步之Event
  36. 4.7 线程优先级队列(queue)
  37. 4.8 多线程之线程池pool
  38. 第5章 实战协程
  39. 5.1 定义协程
  40. 5.2 并发
  41. 5.3 异步请求
  42. 第6章 自动化运维工具Ansible
  43. 6.1 Ansible的安装
  44. 6.2 Ansible配置
  45. 6.3 inventory文件
  46. 6.4 Ansible ad-hoc模式
  47. 6.5 Ansible playbooks模式
  48. 第7章 定时任务模块APScheduler
  49. 7.1 安装及基本概念
  50. 7.2 配置调度器
  51. 7.3 启动调度器
  52. 7.4 调度器事件监听
  53. 第8章 执行远程命令的工具Paramiko
  54. 8.1 介绍几个重要的类
  55. 8.2 Paramiko的使用
  56. 第9章 分布式任务队列Celery
  57. 9.1 Celery简介
  58. 9.2 安装Celery
  59. 9.3 安装RabbitMQ或Redis
  60. 9.4 第一个Celey程序
  61. 9.5 第一个工程项目
  62. 9.6 Celery架构
  63. 9.7 Celery队列
  64. 9.8 Celery Beat任务调度
  65. 9.9 Celery远程调用
  66. 9.10 监控与管理
  67. 第10章 任务调度神器Airflow
  68. 10.1 Airflow简介
  69. 10.2 Airflow安装与部署
  70. 10.3 Airflow配置MySQL知识库和LocalExecutor
  71. 10.4 Airflow配置Redis和CeleryExecutor
  72. 10.5 Airflow任务开发Operators
  73. 10.6 Airflow集群、高可用部署
  74. 第11章 Docker容器技术介绍
  75. 11.1 Docker概述
  76. 11.2 Docker解决什么问题
  77. 11.3 Docker的安装部署与使用
  78. 11.4 卷的概念
  79. 11.5 数据卷共享
  80. 11.6 自制镜像并发布
  81. 11.7 Docker网络
  82. 11.8 Docker小结
  83. 第12章 主流自动化配置工具
  84. 12.1 配置引擎CFEngine
  85. 12.2 自动化运维工具Chef
  86. 12.3 Puppet
  87. 12.4 SaltStack
  88. 第13章 开源配置管理平台搭建
  89. 13.1 open-cmdb
  90. 13.2 蓝鲸配置平台
  91. 第14章 统一监控平台Zabbix
  92. 14.1 Zabbix主要功能
  93. 14.2 Zabbix平台的技术术语
  94. 14.3 Zabbix的主要模块
  95. 14.4 Zabbix的安装要求
  96. 14.5 Zabbix的安装:从安装包进行安装
  97. 14.6 Zabbix的安装:从容器进行安装
  98. 第15章 运维开发相关技术
  99. 15.1 前端开发之Vue.js
  100. 15.2 后端接口开发之FastAPI
  101. 15.3 WebSocket开发
  102. 第16章 DevOps方法论
  103. 16.1 什么是DevOps
  104. 16.2 DevOps成功的关键
  105. 16.3 DevOps最常用的10个工具
  106. 16.4 DevOps能为企业带来哪些收益