博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Python]处理windows下多级目录文件,上传到Linux服务器
阅读量:6801 次
发布时间:2019-06-26

本文共 4156 字,大约阅读时间需要 13 分钟。

#-*- coding: utf-8 -*-__author__ = 'tsbc'import sysreload(sys)sys.setdefaultencoding('utf-8')import paramikoimport osimport timeclass Upload():    """    上传每天生成的测试报告到Linux的web服务器。 paramiko 包需要安装    /result/  下存放html文件    /result/image  截图文件    """    username = "root"    password = "******"    hostname = "192.168.200.8"    localdir = "..\\result\\"    romotedir = "/opt/lampp/htdocs/result/"    port = 22    #日期格式 2014-12-17    day = time.strftime('%Y-%m-%d', time.localtime(time.time()))    #获取当前时间格式 2014-12-12-10_39_58    now = time.strftime('%Y-%m-%d-%H_%M_%S', time.localtime(time.time()))    #定义shell创建目录命令:判断路径是否存,    mkdir_day = "[ -d \"" + romotedir + day + "\" ] || mkdir " + romotedir + day + "; "    mkdir_img = "[ -d \"" + romotedir + day + "/image\" ] || mkdir " + romotedir + day + "/image"    # print mkdir_day    # print mkdir_img    """    SSH远程登录Linux主机    """    #调用ssh客户端接口,进行登录    s = paramiko.SSHClient()    #s.load_system_host_keys()    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())    s.connect(hostname=hostname, username=username, password=password)    #使用Linux标准的输入、输出、报错,调用定义好的shell命令进行创建目录    stdin,stdout,stderr=s.exec_command(mkdir_day + mkdir_img)    #输出命令反馈    print stdout.read()    #关闭连接    s.close()    """    os.walk()输出为:    ([路径],[目录],[文件])    ('..\\result\\2014-12-18', ['image'], ['2014-12-18-10_42_43_result.html'])    ('..\\result\\2014-12-18\\image', [], ['2014-12-18-11_28_33_login.png', '2014-12-18-11_28_36_login.png'])    """    path = localdir + day    if os.path.exists(path):        nested = os.walk(path)        for i in nested:            print i            tt = i[1]   #i[0] 是路径; i[1] 目录名称列表; i[2] 是文件列表            if len(tt) > 0:  #当tt>0时,说明是根目录(入口目录)下,tt<0时,说明当前是叶子目录                print u" = +当前目录 " + str(i[0]) + u" 下的文件有:"                ff = i[0].split('\\')#使用\进行路径分割                ddir = ff[len(ff)-1]#获取末尾的文件目录名称                for j in i[2]:                    localn = localdir + ddir + "\\" + j                    romoten = romotedir + ddir + "/" + j                    print j                    # print localn                    # print romoten                    try:                        #通过主机名、端口、用户名和密码连接远程主机。                        t = paramiko.Transport(hostname, port)                        t.connect(username=username, password=password)                        sftp =paramiko.SFTPClient.from_transport(t)                        #sftp的put表示把本地文件传送到远程机器上,get表示把远程文件传递到本地机器上。                        sftp.put(localn, romoten)                        #关闭连接                        t.close()                    except Exception, e:                        import traceback                        traceback.print_exc()                        try:                            t.close()                        except:                            pass            elif len(tt) < 1:                print u" = +当前目录 " + str(i[0]) + u" 下的文件有:"                ff = i[0].split('\\')#使用\进行路径分割                fdir = ff[len(ff)-1]#获取末尾的文件目录名称                for j in i[2]:                    localn = str(i[0]) + "\\" + j #str(i[0]) == localdir + fdir                    romoten = "/opt/lampp/htdocs/result/" + day +"/"+ fdir + "/" + j                    print j                    # print localn                    # print romoten                    #stdin,stdout,stderr=s.exec_command("mkdir /opt/lampp/htdocs/result/"+fdir)                    try:                        t = paramiko.Transport(hostname, port)                        t.connect(username=username, password=password)                        sftp =paramiko.SFTPClient.from_transport(t)                        #sftp的put表示把本地文件传送到远程机器上,get表示把远程文件传递到本地机器上。                        sftp.put(localn, romoten)                        t.close()                    except Exception, e:                        import traceback                        traceback.print_exc()                        try:                            t.close()                        except:                            pass    else:        print path+" 目录不存在,报告未能成功上传!"if __name__ == "__main__":    Upload()

 

转载于:https://www.cnblogs.com/tsbc/p/4175196.html

你可能感兴趣的文章
学霸装学渣
查看>>
Microsoft Dynamics CRM 2015 完全安装好以后 完全备份
查看>>
git 在windows下的应用(一) - 本地仓库代码管理
查看>>
符合通用准则(common criteria compliance)
查看>>
APP-V5.0的Sequencer过程
查看>>
IBM X3650 M3服务器上RAID配置实战
查看>>
Objective-C中的@class,SEL和IMP等灵活机制
查看>>
2030中国足球称霸世界
查看>>
工信部:《关于加强电信和互联网行业网络安全工作的指导意见》
查看>>
开源可实现迁移
查看>>
融合式架构Nutanix深入分析一
查看>>
RHEL6.3下配置简单Apache https
查看>>
利用Cocos2dx-3.0新物理特性模拟弹珠迷宫
查看>>
Office 365系列之三:Office365初体验
查看>>
VMware View client for iPad在医疗行业的应用
查看>>
Altiris 7.1 Agent
查看>>
独家爆料:创宇云与小鸟云的故事
查看>>
Windows Server 2012 RMS for Exchange Server 2013
查看>>
Linux网络IP配置
查看>>
FireEye:K3chang行动***欧洲外交部门
查看>>