paramiko操作详解(封装好的类,可以直接使用)

#!/usr/bin/env python
#encoding:utf8
#author: djoker

import paramiko

class myParamiko:
    def __init__(self,hostip,username,password,port=22):
        self.hostip = hostip
        self.port = port
        self.username = username
        self.password = password
        self.obj = paramiko.SSHClient()
        self.obj.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        self.obj.connect(self.hostip,self.port,self.username,self.password)
        self.objsftp = self.obj.open_sftp()

    def run_cmd(self,cmd):
        stdin,stdout,stderr = self.obj.exec_command(cmd)
        return stdout.read()

    def run_cmdlist(self,cmdlist):
        self.resultList = []
        for cmd in cmdlist:
            stdin,stdout,stderr = self.obj.exec_command(cmd)
            self.resultList.append(stdout.read())
        return self.resultList

    def get(self,remotepath,localpath):
        self.objsftp.get(remotepath,localpath)

    def put(self,localpath,remotepath):
        self.objsftp.put(localpath,remotepath)

    def getTarPackage(self,path):
        list = self.objsftp.listdir(path)
        for packageName in list:
            stdin,stdout,stderr  = self.obj.exec_command("cd " + path +";"
                                                         + "tar -zvcf /tmp/" + packageName
                                                         + ".tar.gz " + packageName)
            stdout.read()
            self.objsftp.get("/tmp/" + packageName + ".tar.gz","/tmp/" + packageName + ".tar.gz")
            self.objsftp.remove("/tmp/" + packageName + ".tar.gz")
            print "get package from " + packageName + " ok......"

    def close(self):
        self.objsftp.close()
        self.obj.close()

if __name__ == '__main__':
    sshobj = myParamiko('10.10.8.21','root','xxxxxxxx',22)
    sshobj.close()

 

posted @ 2016-09-25 20:02  喝杯茶  阅读(3102)  评论(1编辑  收藏  举报