跳过正文
  1. Posts/

通过参数化上传文件到 FTP 服务器

·359 字·1 分钟· ·
沈显鹏
作者
沈显鹏
DevOps & Build 工程师 | Python 爱好者 | 开源贡献者

实现 CI/CD 过程中,常常需要将构建好的 build 上传到一个公共的服务器,供测试、开发来获取最新的 build。如何上传 build 成果物到 FTP server,又不想把 FTP server登录的用户名和密码存在脚本里,想做这样的参数化如何实现呢?

upload_to_ftp.bat [hostname] [username] [password] [local_path] [remote_pat]

windows batch 由于它的局限性,在实现上是比较麻烦的,但还是有办法。如何用 windows batch 来实现呢?借助一个临时文件,把需要的参数写入到临时文件里,然后通过 ftp -s 参数读取文件,最后把临时文件删除的方式来实现。

@echo off

set ftp_hostname=%1
set ftp_username=%2
set ftp_password=%3
set local_path=%4
set remote_path=%5

if %ftp_hostname%! == ! ( echo "ftp_hostname not set correctly" & goto USAGE )
if %ftp_username%! == ! ( echo "ftp_username not set correctly" & goto USAGE )
if %ftp_password%! == ! ( echo "ftp_password not set correctly" & goto USAGE )
if %local_path%! == ! ( echo "local_path not set correctly" & goto USAGE )
if %remote_path%! == ! ( echo "remote_path not set correctly" & goto USAGE )

echo open %ftp_hostname% > ftp.txt
echo user %ftp_username% %ftp_password% >> ftp.txt
echo cd %remote_path% >> ftp.txt
echo lcd %local_path% >>ftp.txt
echo prompt off >>ftp.txt
echo bin >> ftp.txt
echo mput * >> ftp.txt
echo bye >> ftp.txt
ftp -n -s:ftp.txt

del ftp.txt
goto END

:USAGE
echo.
echo.   - -------------------------------------------------------------------------------
echo.   - upload_to_ftp.bat [hostname] [username] [password] [local_path] [remote_pat]  -
echo.   - Example:                                                                      -
echo.   - upload_to_ftp.bat 192.168.1.1 guest guest D:\Media\* C:\Builds\               -
echo.   - -------------------------------------------------------------------------------
echo.

:END

相关文章

Jenkins Linux Agent 配置
·353 字·1 分钟
本文提供了 Jenkins Linux Agent 的逐步配置指南,包括 Java 运行时的准备、节点创建以及常见问题的排查方法。
Jenkins Windows Agent 配置
·608 字·2 分钟
本文提供 Jenkins Windows Agent 的详细配置步骤,包括 Java 运行时准备、节点创建以及常见问题的排查方法。
如何做好功能测试
·1799 字·4 分钟
介绍功能测试的基本流程、用例设计、项目控制、上线回归等方面的建议,帮助测试人员提升功能测试的质量和效率。
做了9年测试,我为何转开发?
·691 字·2 分钟
本文记录了我从测试转为开发的经历和感悟,分享了在陪产假期间的学习和工作安排,包括阅读书籍、参与开源项目、体育锻炼等,强调了如何在照顾家庭的同时保持学习和成长。
Error: Permission denied (publickey)
·276 字·1 分钟
本文介绍了如何在配置多个 SSH Git Key 时解决 “Permission denied (publickey)” 错误,确保 GitHub 和 Bitbucket 的 SSH 连接正常工作。
我眼中的高级测试工程师
·863 字·2 分钟
本文介绍了高级测试工程师所需的技能和经验,包括测试理论、业务能力、工具使用、代码能力等方面,帮助读者了解如何成为一名优秀的高级测试工程师。