paramiko学习

paramiko遵循SSH2协议,使用该模块可以对远程服务器进行命令执行(SSHClient)或文件操作(SFTPClient)

import paramiko
from functools import  wraps


def func_runtime(f):
    """
    函数运行装饰器
    :param f:
    :return:
    """
    @wraps(f)
    def decorated(*args,**kwargs):
        print("[function : {name} start...]".format(name=f.__name__))
        result =  f(*args,**kwargs)
        print("[function : {name} finished]".format(name=f.__name__))
        return result
    return decorated


class Paramiko():
    def __init__(self,hostname,usr,pwd):
        """
        :param hostname:IP地址
        :param usr: 用户名
        :param pwd: 密码
        """
        self.pwd = pwd
        self.host = hostname
        self.usr = usr`
    
    @func_runtime
    def exec_cmd(self,cmd):
        """
        执行命令
        :param cmd: 执行命令
        :return:返回值
        """
        try:
            client = paramiko.SSHClient()
            client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            client.connect(hostname=self.host, username=self.usr, password=self.pwd, port=22)
        except:
            print("连接失败")
        stdin, stdout, stderr=client.exec_command(cmd)
        result = stdout.read().decode('utf-8')
        client.close()
        return result
    @func_runtime
    def post_file(self,local_path,remote_path):
        """
        上传文件
        :param local_path: 本地文件路径
        :param remote_path: 远端文件路径
        :return:
        """
        try:
            tran = paramiko.Transport(self.host, 22)
            tran.connect(username=self.usr, password=self.pwd)
        except:
            print("连接失败")
        sftp = paramiko.SFTPClient.from_transport(tran)
        sftp.put(local_path,remote_path)
        tran.close()
    @func_runtime
    def get_file(self,remote_path,local_path):
        """
        下载文件
        :param remote_path: 远端文件路径
        :param local_path: 本地文件路径
        :return:
        """
        try:
            tran = paramiko.Transport(self.host, 22)
            tran.connect(username=self.usr, password=self.pwd)
        except:
            print("连接失败")
        sftp = paramiko.SFTPClient.from_transport(tran)
        sftp.get(remote_path, local_path)
        tran.close()

collect = Paramiko("192.168.1.2","test","123123")

collect.exec_cmd("uname -a")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值