[Python]处理windows下多级目录文件,上传到Linux服务器
#-*- coding: utf-8 -*-
__author__ = 'tsbc'
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import paramiko
import os
import time
class 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()
[Python]处理windows下多级目录文件,上传到Linux服务器的更多相关文章
- 将windows下的文件上传到Linux服务器上
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lx_Frolf/article/deta ...
- 通过XShell实现windows文件上传到Linux服务器上
.XShell上传文件到Linux服务器上 在学习Linux过程中,我们常常需要将本地文件上传到Linux主机上,这里简单记录下使用Xsheel工具进行文件传输 1:首先连接上一台Linux主机 2: ...
- Linux 如何使用压缩与解压缩的方式将Windows下的zip压缩包上传到Linux系统
当我们无法使用xftp方式上传文件到Linux系统时,我们可以使用在Windows下压缩文件夹,然后到Linux系统下解压缩的方式,完成整个上传工作. 第一步:在Windows系统下,将整个文件夹压缩 ...
- 如何使用压缩的方式将Windows下的zip压缩包上传到Linux系统
我们可以使用在Windows下压缩文件夹,然后到Linux系统下解压缩的方式,完成整个上传工作. 第一步:在Windows系统下,将整个文件夹压缩成zip后缀的压缩包 方法一:
- 中文名文件上传到linux服务器上以后文件名会乱码(openoffice)
1.中文名文件上传后保存在linux服务器上文件名会乱码,但是我们通过SSH直接对服务器上的一个文件进行重命名是可以使用中文的,而且显示出来是正确的,这说明服务器是可以支持中文的. 2.而为什么上传的 ...
- 本地文件上传到Linux服务器
1.从服务器上下载文件scp username@servername:/path/filename /var/www/local_dir(本地目录) 例如scp root@192.168.0.101: ...
- RPC框架下实现文件上传到linux服务器
一.前端使用element -ui 的upload组件 :data 表示额外传递的参数, :header 表示设置请求头参数,如,token等, action表示后台api接口的地址 二. conto ...
- windows文件上传到linux服务器上
https://blog.csdn.net/m0_37751917/article/details/80739850 1:检查是否安装sz rz rpm -qa |grep sz rpm -qa | ...
- xshell如何将Windows文件上传到linux
1. 首先先将你xshell配置好用户名及密码等,必须使用有权限下载的账号进行操作. 使用 yum provides */rz 这条命令,查看你系统自带的软件包的信息. 2.在输出的信息中可 ...
随机推荐
- jquery ajax传递多个对象或数组到后台
1.js对象创建:因为需要把对象json序列化后,才能传递到后台,后台根据json字符串进行反序列化. 2.Jquery $.ajax方法的配置 针对$.ajax方法的配置参数需要进行修改: 1) ...
- 【HDU 2853】 KM算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2853 题意:有n个公司,m个任务,每个公司做每个任务都有一个效率值,最开始每个公司都指派了一个任务,现 ...
- Chrome开发,debug的使用方法。
怎样打开Chrome的开发者工具? 你可以直接在页面上点击右键,然后选择审查元素: 或者在Chrome的工具中找到: 或者,你直接记住这个快捷方式: Ctrl+Shift+I (或者Ctrl+Shif ...
- 除了白名单外的IP每秒最多处理 8 个请求 limit_conn_zone
防止黑客知道你的源服务器真实IP进行并发攻击,通常只需要保护动态文件请求,�php. 添加文件 nginx/conf/limit/whiteip.conf 里面是你要忽略限制的 白名单 IP地址,通常 ...
- TypeScript学习记录
TypeScript官网 TypeScript中文网 TypeScrpit Handbook 中文版 DefinitelyTyped The TypeScript Definition Manager ...
- INSTRUCTION CYCLE
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION • Fetch: Read the nex ...
- 佛祖保佑 永无BUG 永不修改
// // _oo0oo_ // o8888888o // 88" . "88 // (| -_- |) // 0\ = /0 // ___/`---'\___ // .' \\| ...
- 基于TCP/IP的长连接和短连接
1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次 ...
- Maven-003-私人定制 maven archetype
在使用 Maven 创建项目模块的时候,依据其默认的 archetype 模板,创建出的目录.及默认的单元测试工具为 JUnit 3.8.1,而且有些常用的资源文件目录.配置文件(例如:Log4J 的 ...
- WindowsFormsIntegration.dll
WindowsFormsIntegration.dll的位置如下 C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFrame ...