[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.在输出的信息中可 ...
随机推荐
- js控制滚动条平滑滚动到制定位置
http://www.daixiaorui.com/read/92.html 滚动到顶部: $('.scroll_top').click(function(){$('html,body').anima ...
- [silverlight—wcf]参数:调试资源字符串不可用,秘钥和参数通常提供足够的信息用以诊断问题。
这段时间在做一个项目,有一项需求是上传,经过思考之后,决定采取Silverlight+WCF的方式做上传操作.就在项目做完了之后,本地测试也都没问题,发布到服务器上的时候,顿时就出现故障了.在选择文件 ...
- 第一课JAVA开发环境配置
进行JAVA环境安装首先得进行jdk1.7部署,注意应放在没有中文和空格的目录下,然后进行配置环境变量,配置环境变量分为三步: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_ ...
- Unity学习疑问记录之layer问题
在Sprite Render中有个Sorting Layer,这里可以建层,而Inspector窗口中也有个layer,也可以新建层,这2者有什么不一样呢? layer主要通过光线投射来选择性地忽略碰 ...
- 一道打印M的面试题
public class Demo { /** * 平面图形题(二维数组) */ public static void main(String[] args) { int num = 25; int ...
- Unable to establish connection to tokens
安装openstack后遇到的第一个问题. 执行命令nova list得到如下结果: [root@localhost ~(keystone_admin)]# nova list No handlers ...
- js弹窗
常用人JS弹窗,lhgDialog 4.20
- 打包成zip
protected void btnExportZip_Click(object sender,EventArgs e) { string archiveName=String.Format(&quo ...
- 【转载】区间信息的维护与查询(一)——二叉索引树(Fenwick树、树状数组)
在网上找到一篇非常不错的树状数组的博客,拿来转载,原文地址. 树状数组 最新看了一下区间的查询与修改的知识,最主要看到的是树状数组(BIT),以前感觉好高大上的东西,其实也不过就这么简单而已. 我们有 ...
- 详解依赖注入(DI)和Ioc容器
简单的来说,关键技术就是:注册器模式. 场景需求 我们知道写一个类的时候,类本身是有个目的的,类里面有很多方法,每个方法搞定一些事情:我们叫这个类为主类. 另外这个主类会依赖一些其他类的帮忙,我们叫这 ...