最近总在用 fabric,踩了一些坑, 分享一个实用函数

本文介绍了一个用于简化本地和远程执行shell命令的Python函数cmd_method,该函数通过Fabric库实现,并能处理命令的交互式需求。通过设置不同参数,可以控制命令的错误输出、隐藏输出以及进行输出的交互响应,对于自动化部署非常有用。
摘要由CSDN通过智能技术生成

最近一直在做的一个东西, 很多地方需要用到 shell 命令,
同样的命令既要在本地运行, 也要放到远程,并获取远程的输出结果
如果每个地方都要判断是在本地还是远程然后再去分别实例不同的对象,
所以写了一个函数, 尽量减少一下重复代码

加入了自己的一些理解

def cmd_method(host, port=22, user=None, pwd=None):
“”"
执行远程或本地命令
r = r"(?i)y|n|[y/d/n]|[y/n]|y/n"
watcher = Responder(pattern=r, response=‘y\n’)
Responder 对象可以通过正则匹配对 stdout 做分析, 如果匹配到了,就向 stdin 写入 response
完成命令的反复交互
:param host: 主机 ip, 本地可以用 ‘localhost’ or ‘127.0.0.1’
:param port: ssh 的端口
:param user: 登陆远程主机的用户
:param pwd: 远程登陆的密码
:return: 正常输出和错误输出: (stdout, stderr)
“”"

from fabric import Connection
from invoke import run, Responder
from paramiko import AuthenticationException
from paramiko.ssh_exception import NoValidConnectionsError, SSHException

def local(command, interactive):
    watcher = Responder(
            pattern=interactive['pattern'],
            response=
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值