paramiko综合函数实现

paramiko综合函数实现(复制粘贴即可使用)

类方法实现

通过类方法,初始化一次ssh连接,多次调用执行命令或传输文件。

transport封装函数(推荐使用)

import paramiko
class ssh(object):
    def __init__(self,hostdata):
        """
        初始化连接信息和ftp方法
        :param hostdata: 连接信息字段
        """
        self.ip= hostdata['ip']
        self.port= hostdata['port']
        self.user= hostdata['user']
        self.passwd= hostdata['passwd']
        self.transport= paramiko.Transport((self.ip,self.port))
        self.transport.connect (username=self.user, password=self.passwd)
        self.obj= paramiko.SSHClient()
        self.obj._transport= self.transport
        self.objsftp= self.obj.open_sftp ()
    def run_cmd(self, cmd):
        """
        执行命令方法
        :param cmd: 需要执行的命令
        :return:
        """
        stdin, stdout, stderr= self.obj.exec_command (cmd)
        return stdout.read ()
    def run_cmdlist(self, cmdlist):
        """
        执行命令方法列表
        :param cmdlist: 命令列表
        :return:
        """
        self.resultList= []
        for cmdin cmdlist:
            stdin, stdout, stderr= self.obj.exec_command (cmd)
            self.resultList.append (stdout.read ())
        return self.resultList
    def get(self,remotepath,localpath):
        """
        下载文件方法(两个路径都要指定文件名)
        :param remotepath: 服务器路径
        :param localpath:  本地路径
        :return:
        """
        self.objsftp.get(remotepath,localpath)
    def put(self,localpath,remotepath):
        """
        上传文件方法(两个路径都要指定文件名)
        :param localpath: 本地路径
        :param remotepath: 服务器路径
        :return:
        """
        self.objsftp.put(localpath,remotepath)
    def close(self):
        """
        关闭方法
        :return:
        """
        self.objsftp.close ()
        self.transport.close ()
# 函数的使用
if __name__== '__main__':
    hostdata= {
        'ip':'192.168.163.129',
        'port':22,
        'user':'root',
        'passwd':'zhujingzhi',
    }
    host= ssh (hostdata)                                     # 实例化远程函数给数据库里面的IP 端口 用户名 密码信息
    v= host.run_cmd ('df -h')                                # 执行单个命令
    vstr= v.decode (encoding='utf-8', errors='strict')       # bytes转字符串
    v1= host.run_cmdlist (['ls','df'])                      # 执行命令列表
    print(hostdata['ip'])
    print(vstr)
    v= host.get('/root/anaconda-ks.cfg','D:\\采集\\a.cfg')    # 下载文件
    v= host.put('D:\\采集\\a.cfg','/opt/a.cfg')               # 上传文件
    host.close()

普通方式

import paramiko
class ssh(object):
    def __init__(self,hostdata):
        """
        初始化连接信息和ftp方法
        :param hostdata: 连接信息字段
        """
        self.ip= hostdata['ip']
        self.port= hostdata['port']
        self.user= hostdata['user']
        self.passwd= hostdata['passwd']
        self.obj= paramiko.SSHClient()
        self.obj.set_missing_host_key_policy(paramiko.AutoAddPolicy ())
        self.obj.connect (self.ip,self.port,self.user,self.passwd)
        self.objsftp= self.obj.open_sftp ()
    def run_cmd(self, cmd):
        """
        执行命令方法
        :param cmd: 需要执行的命令
        :return:
        """
        stdin, stdout, stderr= self.obj.exec_command (cmd)
        return stdout.read ()
    def run_cmdlist(self, cmdlist):
        """
        执行命令方法列表
        :param cmdlist: 命令列表
        :return:
        """
        self.resultList= []
        for cmdin cmdlist:
            stdin, stdout, stderr= self.obj.exec_command (cmd)
            self.resultList.append (stdout.read ())
        return self.resultList
    def get(self,remotepath,localpath):
        """
        下载文件方法(两个路径都要指定文件名)
        :param remotepath: 服务器路径
        :param localpath:  本地路径
        :return:
        """
        self.objsftp.get(remotepath,localpath)
    def put(self,localpath,remotepath):
        """
        上传文件方法(两个路径都要指定文件名)
        :param localpath: 本地路径
        :param remotepath: 服务器路径
        :return:
        """
        self.objsftp.put(localpath,remotepath)
    def close(self):
        """
        关闭方法
        :return:
        """
        self.objsftp.close ()
        self.obj.close ()
# 函数的使用
if __name__== '__main__':
    hostdata= {
        'ip':'192.168.163.129',
        'port':22,
        'user':'root',
        'passwd':'zhujingzhi',
    }
    host= ssh (hostdata)                                     # 实例化远程函数给数据库里面的IP 端口 用户名 密码信息
    v= host.run_cmd ('df -h')                                # 执行单个命令
    vstr= v.decode (encoding='utf-8', errors='strict')       # bytes转字符串
    v1= host.run_cmdlist (['ls','df'])                      # 执行命令列表
    print(hostdata['ip'])
    print(vstr)
    v= host.get('/root/anaconda-ks.cfg','D:\\采集\\a.cfg')    # 下载文件
    v= host.put('D:\\采集\\a.cfg','/opt/a.cfg')               # 上传文件
    host.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值