[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.在输出的信息中可 ...
随机推荐
- 网络性能测试工具iperf详细使用图文教程
Iperf是一个网络性能测试工具.Iperf可以测试TCP和UDP带宽质量.Iperf可以测量最大TCP带宽,具有多种参数和UDP特性. Iperf可以报告带宽,延迟抖动和数据包丢失.利用Iper ...
- Maven入门系列(二)--设置中央仓库的方法
原文地址:http://www.codeweblog.com/maven入门系列-二-设置中央仓库的方法/ Maven仓库放在我的文档里好吗?当然不好,重装一次电脑,意味着一切jar都要重新下载和发布 ...
- c++之vector
vector是STL中最常见的容器,它是一种顺序容器,支持随机访问.vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似, 不同的地方就是:数组是静态分配空间,一旦分配了空间的大小, ...
- 新一波makefile
# CROSS_COMPILE = arm-linux-CC = $(CROSS_COMPILE)gccINC=-I../ -I.LIB=-lpthread -lcryptoCC_FLAG= -std ...
- IOS网络第二天 - 03-JSON显示数据,调用本地视频播放,数据转模型
********HMVideosViewController.m #import "HMVideosViewController.h" #import "MBProgre ...
- MBR(Master Boot Record)主引导记录分析
root@ubuntu1404:/home/chen# fdisk -l /dev/sda1 Disk /dev/sda1: MB, bytes heads, sectors/track, cylin ...
- 【iCore3 双核心板_FPGA】例程九:状态机实验——状态机使用
实验指导书及代码包下载: http://pan.baidu.com/s/1o72i3mq iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- HTTP常见错误代码总结
1.HTTP 401 用户验证失败.不允许继续访问 2.HTTP 403 禁止访问,访问web应用,没有指定要访问页面的名称 3.HTTP 404 请求的文件找不到,一般情况是在浏览器输入地址时,输入 ...
- GDC2016 Epic Games【Bullet Train】 新风格的VR-FPS的制作方法
追求“舒适”和“快感”的VR游戏设计方法 http://game.watch.impress.co.jp/docs/news/20160318_749016.html [Bullet Tr ...
- CentOS7安装mysql5.6.23
============安装glibc版本============== 一.下载glibc版本的Mysql mysql-advanced-5.6.23-linux-glibc2.5-x86_64.zi ...