龙空技术网

「自动化」使用python登录linux系统并下载日志文件

代码碎片 169

前言:

今天大家对“python注册登录程序”可能比较注意,咱们都想要分析一些“python注册登录程序”的相关知识。那么小编也在网上汇集了一些关于“python注册登录程序””的相关内容,希望兄弟们能喜欢,各位老铁们快快来学习一下吧!

需求:

测试工程师 提交bug时,需要附上日志文件,但linux系统(阉割版)没有直接取日志的功能,而且日志文件存在多个,手动搭建环境取日志费时费力,为了提高取日志的效率可使用python完成进行自动化取日志功能

代码:

import paramikoclass LogExport(object):    def __init__(self,ip,username,password,local):        self.ip = ip        self.username = username        self.password = password        self.local = local    def compress(self):        ssh = paramiko.SSHClient() # 实例化SSH客户端        policy = paramiko.AutoAddPolicy() # 创建默认的白名单        ssh.set_missing_host_key_policy(policy) # 设置白名单        ssh.connect(hostname=self.ip,port=22,username=self.username,password=self.password)        i=0        while i < 3:            stdin,stdout,stderr = ssh.exec_command("tar -zcvf /test/log.tar.gz /test/log")            print("日志压缩中,请等待。。。")            #print(stdout.read().decode("utf-8")) #压缩结果展示            stdin,stdout,stderr = ssh.exec_command("ls /test")            result1 = str(stdout.read().decode())            result2 = "log.tar.gz"            if result2 in result1: #判端日志压缩包是否打包成功                ssh.close()                print("日志压缩完成,即将导出。。。")                # return "success"                self.export() #存在即导出                break            else:                # return "false"                i = i+1                if i == 3:                    print('日志压缩失败')    def export(self):        scp = paramiko.Transport((self.ip,22))        scp.connect(username=self.username,password=self.password)        sfcp = paramiko.SFTPClient.from_transport(scp)        remote_path = "/test/log.tar.gz"  #导出原地址        local_path = self.local        sfcp.get(remote_path,local_path)        scp.close()        print("日志导出完成")        self.delete()    #设备中删除压缩文件    def delete(self):        ssh = paramiko.SSHClient()        policy = paramiko.AutoAddPolicy()        ssh.set_missing_host_key_policy(policy)        ssh.connect(hostname=self.ip,port=22,username=self.username,password=self.password)        stdin,stdout,stderr = ssh.exec_command("ls /test")        result3 = str(stdout.read().decode("utf-8"))        result4 = "log.tar.gz"        if result4 in result3:            stdin,stdout,stderr = ssh.exec_command("rm -rf /test/log.tar.gz")        else:            print("日志压缩文件不存在")if __name__ == "__main__":        ip = "192.168.x.x"        username = "ssh账号"        password = "ssh密码"    local = "D:\\Log\\log.tar.gz"   #导出目标地址        start = LogExport(ip,username,password,local)        start.compress()    print ("日志导出地址:",local)

执行:

测试结果:

标签: #python注册登录程序