基于Python实现批量上传文件或目录到不同的Linux服务器
by:授客 QQ:1033553122
1、 编辑配置文件conf/rootpath_for_doc.conf 1
2、 编辑配置文件conf/host_config.conf 2
3、 编辑配置文件conf/doc_for_upload.txt 3
实现功能
批量上传文件、目录(包括该目录下的所有文件,子目录及其文件)到不同的Linux服务器
测试环境
Win7 64位
Python 3.3.2
pscp 64位
下载地址:
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
网盘下载地址:
https://pan.baidu.com/s/1qYFft4g
使用方法
1、编辑配置文件conf/rootpath_for_doc.conf
[DOCROOTPATH]
rootpath_for_doc = D:\mysvn\
说明:
rootpath_for_doc设置一个目录路径,作为配置文件所在跟目录,本文中以以下目录结构为例子
D:\mysvn
└─myfolder
│ SVNClient.py
│
├─mydir
│ newfile_test.txt
│
└─testdir
t.txt
2、编辑配置文件conf/host_config.conf
如下截图,配置需要上传文件、目录(包括)的服务器主机信息
说明:
[192.168.1.102]: [需要上传文件的目标主机ip]
host:需要上传文件的目标主机ip
username:登录该主机的用户名
hostkey:hostkey
password:登录密码
port:端口号
remark:补充说明,比如该主机是作啥用的
hostkey的或许方式如下:
进入到项目文件中的pscp目录
cd /d C:\Users\laiyu\PycharmProjects\autodeploy\pscp
执行以下命令
pscp.exe -v -P 22 -pw huozhe -r D:\mysvn\\myfolder\SVNClient.py
root@192.168.1.102:/root/testdir
Connecting to 192.168.1.102 port 22
……(略)
Host key fingerprint is:
ssh-rsa 2048
c2:52:16:3f:24:37:b8:65:ec:9b:26:e5:04:e8:1d:a9
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
……(略)
如上图,带背景色,加粗部分的内容,就是hostkey
选项说明:
-P 22:端口
-pw :登录密码
D:\mysvn\\myfolder\SVNClient.py:要上传至服务器的本地文件
root@192.168.1.102:登陆服务器的用户名@服务器ip
/root/testdir:要上传到服务器的目标目录
3、编辑配置文件conf/conf/doc_for_upload.txt
# 测试实例名(#
代表注释
[192.168.1.102]
myfolder\SVNClient.py|/root/testdir
myfolder
|
/root/testdir
# wx
[10.202.94.176]
#pullGit.bat
|
/home/appdeploy/
[10.202.94.177]
#Dir|/home/appdeploy/
说明:
[192.168.1.102]:要上传文件至目标主机ip
myfolder\SVNClient.py|/root/testdir:相对于“根目录”的文件路径|需要上传到的服务器远程目录
此处,根目录,即conf/rootpath_for_doc.conf中配置的跟目录rootpath_for_doc值
myfolder|/root/testdir:相对于“根目录”的目录路径|需要上传到的服务器远程目录
注意:目录路径、文件路径,与远程目录之间以 | 分隔,
# 注释,注释会被程序自动忽略,可以用notepad,ultraEdit的列模式,批量编辑批量注释
4、运行程序
进入到项目跟目录
cd /d C:\Users\laiyu\PycharmProjects\autodeploy
python main.py
5、查看结果
uploadresult/result_for_upload_success.txt
uploadresult/result_for_upload_failure.txt
分别记录了运行成功和失败的文件信息
6、改进一点
建议写成批处理
cd /d C:\Users\laiyu\PycharmProjects\autodeploy
python main.py
start
C:\Users\laiyu\PycharmProjects\autodeploy\uploadresult/result_for_upload_success.txt
start
C:\Users\laiyu\PycharmProjects\autodeploy\uploadresult/uploadresult/result_for_upload_failure.txt
源码下载地址
https://pan.baidu.com/s/1dEJpwrf
改进版(bug修复与改进)