import os

import paramiko

baseconfig = {
"ip": "121.4.38.187",
"port": 22,
"username": "",
"password": "",
"localdir": "E:\\javawork\\moodapi\\target\\classes",
"remotedir": "/www/wwwroot/zshapi",
"startsplit": "target",
"exclude": [],
"include": ["Info"],
"fielExt": ".class",
"succExec": "",
"skipDircheck": False
} # 遍历所有文件夹下的文件
def walkFiles(path, endpoint=None):
file_list = []
for root, dirs, files in os.walk(path):
for file in files:
file_path = os.path.join(root, file)
if endpoint:
if file_path.endswith(endpoint):
file_list.append(file_path)
else:
file_list.append(file_path)
return file_list def getRemotedir(f):
if baseconfig["startsplit"] != "":
p = f.split(baseconfig["startsplit"])[1].replace("\\", "/")
return p def checkExclude(file):
filename = os.path.split(file)[1]
filename = filename.lower()
for regstr in baseconfig["exclude"]:
if filename.__contains__(regstr.lower()):
return True
return False def checkInclude(file):
filename = os.path.split(file)[1]
filename = filename.lower()
for regstr in baseconfig["include"]:
if filename.__contains__(regstr.lower()):
return True
return False def upload(files):
if len(files) == 0:
return
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=baseconfig["ip"], port=baseconfig["port"], username=baseconfig["username"],
password=baseconfig["password"])
ssh.get_transport()
sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())
for f in files:
if checkExclude(f):
print("跳过:%s" % f)
continue
if len(baseconfig["include"]) > 0:
if checkInclude(f) == False:
continue
p = baseconfig["remotedir"] + getRemotedir(f)
if baseconfig["skipDircheck"] == False:
remotedir = os.path.split(p)[0]
stdin, stdout, stderr = ssh.exec_command("ls " + remotedir)
if stdout.readline() == '':
stdin, stdout, stderr = ssh.exec_command("mkdir -p " + remotedir)
stdout.readline()
print("上传:%s至%s" % (f, p))
sftp.put(f, p)
if baseconfig["succExec"] != "":
stdin, stdout, stderr = ssh.exec_command(baseconfig["succExec"])
stdout.readline()
ssh.close() if __name__ == '__main__':
files = walkFiles(baseconfig["localdir"], endpoint=baseconfig["fielExt"])
upload(files)

最新文章

  1. MATLAB的三维散点图
  2. iOS开发小技巧--微博项目中的键盘工具条
  3. Unity 难点目录
  4. 面试复习(C++)之冒泡排序
  5. nutch-2.1导入eclipse+mysql运行
  6. 20145215《Java程序设计》第4周学习总结
  7. 【caffe-windows】 caffe-master 之 cifar10 超详细
  8. 一.CSS工作原理
  9. UI篇--android实现底部按钮布局
  10. php处理字符串常用函数
  11. VIM 及正则表达式
  12. 自定义Edit控件控制输入范围
  13. wuzhi 五指 伪静态
  14. 【广告】win10 uwp 水印图床 含代码
  15. Django(八)下:Model操作和Form操作、序列化操作
  16. C++程序设计方法3:类中的静态成员
  17. python eval()和exec()以及complie()
  18. Requests快速上手
  19. C#中对于Enum类型的遍历
  20. Java调用C函数

热门文章

  1. 操作系统课程设计pintos project1实验摘记
  2. AArch32/AArch64应用程序级内存模型(五)
  3. 【DL论文精读笔记】Image Segmentation Using Deep Learning: A Survey 图像分割综述
  4. 总结uni-app遇到的坑持续跟新
  5. 一张VR图像帧的生命周期
  6. Selenium4+Python3系列(十) - Page Object设计模式
  7. HSSFSheet XSSFWorkbook SXSSF Java读取Excel数据
  8. 【每日一题】【动态规划】2022年1月30日-NC127 最长公共子串
  9. Android ViewPager2 + TabLayout + BottomNavigationView
  10. Bootstrap响应式相关