Python远程连接服务器用它就可以了
发布时间:2021-12-06 18:26:12 所属栏目:语言 来源:互联网
导读:使用fabric玩转远程服务器管理 fabric基于强大的paramiko、invoke等库,构建出一整套简单易用的API,使得我们使用简洁的语句就可以应付常见的各种远程服务器操作,使用pip install fabric完成安装,本文演示对应版本为2.6。 1. 连接到远程服务器并执行终端命
![]() 使用fabric玩转远程服务器管理 fabric基于强大的paramiko、invoke等库,构建出一整套简单易用的API,使得我们使用简洁的语句就可以应付常见的各种远程服务器操作,使用pip install fabric完成安装,本文演示对应版本为2.6。 1. 连接到远程服务器并执行终端命令 要建立并保持对远程服务器的连接,我们需要对fabric.Connection()进行实例化,其基础参数有: 「host:」 str型,格式如'用户名@host:端口',其中':端口'部分可以省略,默认端口为22 「connect_kwargs:」 dict型,用于传入其他连接所需参数,常用的有: 其他可用参数你可以前往 https://docs.paramiko.org/en/latest/api/client.html#paramiko.client.SSHClient.connect的Parameters了解更多。 「password:」 str型,当以密码方式连接时,用于传入与host参数对应的密码 「pkey:」 str型,当以私钥方式连接时,用于设置对应密钥 「timeout:」 float型,用于设置TCP连接的超时时长(单位:秒) 「config:」 fabric.Config型,用于设置更多复杂功能参数,详见https://docs.fabfile.org/en/2.6/api/config.html 先来看一个最基础的例子: from fabric import Connection # 建议将ssh连接所需参数变量化 user = '用户名' host = 'host地址' password = '密码' # 利用fabric.Connection快捷创建连接 c = Connection(host=f'{user}@{host}', connect_kwargs=dict( passwordpassword=password )) # 利用run方法直接执行传入的命令 c.run('pwd'); 可以看到,非常简单就完成了连接服务器及执行指定命令的过程,且run()方法所执行的命令打印出的结果,可以通过stdout属性进行保存: # hide=True抑制run()过程对执行结果的自动打印 output = c.run('df -h', hide=True).stdout print(output) 获悉了fabric的基础使用后,接下来我们来学习一些进阶内容: 2. 配置sudo命令密码自动预填入 我们都知道,对于非root用户,在执行某些权限较高的命令时需要添加sudo前缀,并在会话的初次执行时需要手动输入当前用户的密码,而在fabric中,有两种方式可以实现这个步骤的自动化: (1) 方式1:配合invoke.Responder 我们可以配合invoke.Responder来实现当命令行返回密码输入提示时,自动输入并执行指定的命令: from invoke import Responder # 配置命令行内容监听规则 sudopass = Responder( pattern=f'[sudo] password for {user}:', response=password+'n' ) # 注意需要设置pty=True c.run('sudo pwd', pty=True, watchers=[sudopass]); (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |