前言
本次主要分享是如何基于Python模拟实现ansible的主要功能
ansible功能分析与代码实现
连接远程主机
ansible连接远程主机是通过SSH实现的,因此我们可以通过Python的SSH模块来实现连接远程主机。
Python中SSH模块主要是三方的paramiko模块,这个模块也是ansible内部实现SSH所用的模块。
由于paramiko属于第三方库,所以需要使用如下命令先行安装
1 | bash复制代码pip install paramiko |
下面是使用paramiko进行SSH连接和SFTP连接的相关代码
获取一个SSH连接
1 | python复制代码def get_ssh_conn(hostname, port, username, password): |
获取一个SFTP连接
1 | python复制代码def get_sftp_conn(hostname, port, username, password): |
执行命令
paramiko既然能连接主机,当然也能执行命令
基于SSH连接执行命令
1 | python复制代码def exec_ssh_command(ssh_client, cmd): |
上传下载文件
当我们初始化好后SFTP连接后,就可以对远程服务器进行文件上传下载了
基于SFTP连接进行文件上传下载
1 | python复制代码# put上传文件 |
ansible的ping功能
其实我们可以通过paramiko是否能ssh连接远程主机作为ping功能实现的原理,当ssh能连接成功时,会返回一个sshclient,否则返回None,参考获取一个SSH连接的代码
相关系列文章同步发布于个人博客
Jackless
模拟 saltstack/ansible 系列二(实现 ansible 主要功能)
模拟 saltstack/ansible 系列三(基于短连接实现 saltstack 主要功能)
模拟 saltstack/ansible 系列四(基于长连接实现 saltstack 主要功能)
本文转载自: 掘金