#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import os.path
import paramiko
import datetime
import re
# 配置属性
config = {
#本地项目路径
'local_path' : '',
# 服务器项目路径
'ssh_path' : '',
# 项目名
'project_name' : '',
# 忽视列表
'ignore_list' : [],
# ssh地址、端口、用户名、密码
'hostname' : '',
'port' : 22,
'username' : '',
'password' : '',
# 是否强制更新
'mandatory_update' : False,
# 更新完成后是否重启tomcat
'restart_tomcat' : False,
# tomcat bin地址
'tomcat_path' : '',
# 被忽略的文件类型
'ignore_file_type_list' : []}
# 检查文件夹是否存在,不存在则创建
def check_folder(path):
stdin, stdout, stderr = ssh.exec_command('find ' + path)
result = stdout.read().decode('utf-8')
if len(result) == 0 :
print('目录 %s 不存在,创建目录' % path)
ssh.exec_command('mkdir ' + path)
print('%s 创建成功' % path)
return 1
else:
print('目录 %s 已存在' % path)
return 0
# 检查文件是否存在,不存在直接上传,存在检查大小是否一样,不一样则上传
def check_file(local_path, ssh_path):
# 检查文件是否存在,不存在直接上传
stdin, stdout, stderr = ssh.exec_command('find ' + ssh_path)
result = stdout.read().decode('utf-8')
if len(result) == 0 :
sftp.put(local_path,ssh_path)
print('%s 上传成功' % (ssh_path))
return 1
else:
# 存在则比较文件大小
# 本地文件大小
lf_size = os.path.getsize(local_path)
# 目标文件大小
stdin, stdout, stderr = ssh.exec_command('du -b ' + ssh_path)
result = stdout.read().decode('utf-8')
tf_size = int(result.split('t')[0])
print('本地文件大小为:%s,远程文件大小为:%s' % (lf_size, tf_size))
if lf_size == tf_size:
print('%s 大小与本地文件相同,不更新' % (ssh_path))
return 0
else:
sftp.put(local_path,ssh_path)
print('%s 更新成功' % (ssh_path))
return 1
# 上传流程开始
print('上传开始')