python ssh 库 - paramiko and fabric

本文介绍了Python中用于SSH操作的paramiko和fabric库。paramiko提供了SSHClient进行远程命令执行和文件传输,而fabric则在paramiko基础上进行了封装,简化了使用。在遇到版本问题时,通过virtualenv创建低版本环境解决,并提供了基本的本地和远程操作函数示例。
摘要由CSDN通过智能技术生成

标题提到两个第三方库,都是可以实现在 python 中执行 ssh 命令。fabric 是在 paramiko 的基础上封装开发的。所以一般场景下 fabric 会更加容易使用。

paramiko

paramiko 最直接的是提供 SSHClient,呈现同服务器的一个会话,基本满足我们执行远程命令,文件上下传的操作。client 连接远端服务可以通过提供 key 或者秘钥的方式,如果 使用 ssh 秘钥登录(本地生成 ssh 公秘钥, 将公钥追加到服务器登录用户目录的 .ssh/authorized_keys 中),在建立连接时,将传递密码的参数改为传递秘钥参数既可。

先用 pip 安装 paramiko。

#!/usr/bin/env python
# coding=utf-8
# by orientlu

import paramiko

class ssh_client():

    def __init__(self, host=None,port=22, username=None, password=None, pkey_path=None, timeout=10):
        self.client = paramiko.SSHClient()
        """
        使用xshell登录机器,对于第一次登录的机器会提示允许将陌生主机加入host_allow列表
        需要connect 前调用,否则可能有异常。
        """
        self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

        if password != None:
            self.client.connect(hostname=host,port=port, password=password, timeout=timeout)
        elif  pkey_path != None:
            """使用秘钥登录"""
            self.pkey = paramiko.RSAKey.from_private_key_file(pkey_path)
            self.client.connect(hostname=host,port=port,pkey=self.pkey, timeout=timeout)

        self.sftp = self.client.open_sftp()


    def run_cmd(self, cmd):
        _in, _out, _error = self.client.exec_command(cmd)
        return _out.read(),_error.read()

    def put_file(self, local, remote):
        return self.sftp.put(localpath=local, remotepath=remote)

    def get_file(self, local, remote):
        return self.sftp.get(localpath=local, remotepath=remote)

    def __del__(self):
        self.client.close()
        self.sftp.close()


if __name__ == "__main__":

    print("------ paramiko ssh client test --
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值