[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 ui dialog去掉右上角的叉号
var dialog = $("#id").dialog({ resizable:false, height:, width:, zIndex:, modal:true, open ...
- ajaxfileupload.js
jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' ...
- 关闭SSMS的事务自动提交,改为手动提交
SQLServer 2005-2008-2012使用Oracle时,默认是手动提交.而SQLServer2005中,默认是自动提交,但是SQLServer支持配置. 方法: 用SSMS连接到SQL S ...
- Java Collection框架详解
引用自:http://blog.sina.com.cn/s/blog_6d6f5d7d0100s9nu.html 经常会看到程序中使用了记录集,常用的有Collection.HashMap.HashS ...
- hover事件优化(延时操作)
JQ的hover事件拓展 编写原因:当鼠标滑过某个带有hover事件的元素,但是仅仅是路过,并不是希望查看此部分内容的时候,效果不理想 $.fn.extend({ delayed : function ...
- Educational Codeforces Round 16 A B C E
做题太久也有点累了..难题不愿做 水题不愿敲..床上一躺一下午..离下一场div2还有点时间 正好有edu的不计分场 就做了一下玩玩了 D是个数学题 F是个AC自动机 都没看明白 留待以后补 A 给出 ...
- MySQL Access denied for user root@localhost 解决方法
今天把本地开发的项目(ThinkPHP 3.2.3)移到虚拟机上(CentOS 6.6,LNMP 1.2,MySQL 5.6.23),配置好 MySQL 之后访问首页,出现: 此时 MySQL 的用户 ...
- java向压缩文件添加文件
package org.alfresco.repo.bom.util; import java.io.File; import java.io.FileInputStream; import java ...
- C#常用命名空间
MSDN上的C#.NET Framework类库文档目录树,本人觉得有点不得要领,于是参考搜到的结果简单整理如下: 一.基础命名空间 System 处理内建数据.数学计算.随机数的产生.环境变量.垃圾 ...
- Java中Double类型计算问题
public class Test{ public static void main(String args[]){ System.out.println(0.05+0.01); ...