代码改变世界

jenkins借助winscp传本地文件到远程服务器上

2018-09-10 17:47  加个小鸡腿  阅读(4360)  评论(0编辑  收藏  举报

思路: 在jenkins上调用bat脚本,bat脚本中编写winscp的调用命令即可

 这里涉及到的文件如下,稍后我们逐一介绍:

test.bat

test_up.txt

WinSCP.exe

WinSCP.ini

我们可以看到有winscp,这里会说明winscp的使用,首先我们先看下入口脚本test.bat:

@echo off
set up_dir=C:\build_bat

%up_dir%\winscp.exe /console /script=%up_dir%\test_up.txt

涉及到的test_up.txt如下:

option batch on
option confirm off
option transfer binary
open "test:123456!@120.1.1.11"
put *.apk /source/apk/test/send_app/
close
exit

说明:关于winscp的详细使用,请自行查阅,在这里,我要说明下我遇到的问题,open "test:123456!@120.1.1.11"这一句很明显是登陆阿里云主机的,在调用这句之前,请务必使用winscp.exe登陆过这台主机,因为首次登陆会涉及到一下信任关系,类似如下:

此外,我用了很久在处理在winscp.exe下调用open "test:123456!@120.1.1.11"一下子成功一下子失败的问题,虽然知道里面含有特殊字符,但是不清楚为啥会一下可以,一下不可以,后面加了双引号就ok了,希望可以给大家起到借鉴的作用,免得浪费时间。

 

winscp介绍:

WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。
直接在cmd下输入winscp进入winscp操作介面,查看帮助直接在下面输入help就可以看到所以可用到的命令。

连接到远程机器:
open root@192.168.2.1
输入密码就成功登录了

输入help:
winscp> help
call     执行任意远程Shell命令
cd       改变远程工作目录
chmod    改变远程文件权限
close    关闭会话
exit     关闭所有会话并结束程序
get      从远程目录下载文件到本地目录
help     显示帮助
keepuptodate 在一个远程目录连续反映本地目录的改变
lcd      改变本地工作目录
lls      列出本地目录的内容
ln       新建远程符号链接
lpwd     显示本地工作目录
ls       列出远程目录的内容
mkdir    新建远程目录
mv       移动或者重命名远程文件
open     连接到服务器
option   设置或显示脚本选项的值
put      从本地目录上传文件到远程目录
pwd      显示远程工作目录
rm       删除远程文件
rmdir    删除远程目录
session  列出连接的会话或者选择活动会话
synchronize 用一个本地目录同步远程目录

如果要查看某个命令的具体使用方法用:
help command
例,现在不记得synchroize的具体命令方法了,现在我可以使用:
help synchronize
winscp> help synchronize
synchronize local|remote|both [ <local directory> [ <remote directory> ] ]
  当第一个参数是'local'时,用远程与本地同步。
当第一个参数是'remote'时用本地目录同步远程目录。
当第一个参数是'both'用一个同步另一个。
当目录没有指定时,同步当前工作目录。
如果'synchdelete'设置为'on',旧文件会被删除。
注意:对这个命令,覆盖确认永远是关闭的。
影响的选项:
  transfer, synchdelete, exclude, include
范例:
  synchronize remote

  synchronize both E:\resource /html/resource

  synchronize remote E:\resource /html/resource