一、序言
保持码字记录学习心得也是一件不容易的事件,平时尽管工作比较忙,但也只是本人偷懒的一个借口罢了。19年差不多还一个月一篇,往年...只有4篇。难怪感觉本人往年提高不大。2020曾经到尾了,我会在2021年保持多写心得,将本人学到的货色记录下来并分享进去。
最近感觉开发阶段,每次要繁琐的去更新配置文件和上传jar包到linux比拟麻烦,所以就百度了下,写了个批处理脚本自用。(游戏的json配置文件搁置到我的项目外,不便游戏期间在线更新配置)
二、装置WinSCP
WinSCP是一个Windows环境下应用SSH的开源图形化SFTP客户端。同时反对SCP协定。它的次要性能就是在本地与近程计算机间平安的复制文件。
应用它最次要是为了应用它的命令,通过批处理脚本一键将要上传的文件更新到服务器上。
我下载的是5.17.9版本。个人感觉版本问题不大,抉择任意一个版本就能够了。
三、脚本编写
1.编写脚本文件 upload_to_server.bat
cd D:\software\WinSCPWinSCP.com /script=C:\Users\zzx\Desktop\PlanH5\farm\excel\upload_detail.bat /log=log.txtpause
第1行:进入到你WinSCP的装置目录
第2行:指定dos命令程序 WinSCP.com去运行咱们的winscp命令的另一个脚本。指定日志文件生成/log = log.txt,没太多意义,如果有报错什么的会在窗口显示的,去掉也行。
2.理论运行脚本文件 upload_detail.bat
open root:password@192.168.1.200:22cd /mnt/farm_server/extensions/farm/property_configrm *.jsonput C:\Users\zzx\Desktop\PlanH5\farm\excel\out\data\*.jsonexit
第1行:关上一个ssh连贯,格局: user:password@ip:22
2、3、4行都是执行命令,其中的put 是WinSCP的命令,将你本地windows的目录文件放到方才cd 到的目录下。
通过这样简略的脚本就能够将我打表过的json文件间接上传到服务器了,不必压缩后再通过xshell丢进去再解压了。(不要问Jenkins,问就是还没有。T T)
四、加强版
那如果咱们还想做一些其余的操作呢?或者做一些其余问题的解决?
比方我想在更新到内网的同时,再应用shell脚本更新到外网环境中呢?
如果要在shell脚本中应用scp命令,要先装置expect。
yum -y install expect
编写shell脚本 transfer.sh
#!/usr/bin/expectspawn scp -r /mnt/farm_server/extensions/farm/property_config root@ip:/tmpexpect "*password:"send "password\n"expect eof
必须要用#!/usr/bin/expect 指定在expect环境下,不然运行不了。
spawn:启动新的过程 send:用于向过程发送字符串 expect:从过程接管字符串
执行完第1行后,会通过expect检测收到输出明码的告诉,这个时候通过send向过程发送明码,以\n结尾。
expect eof结尾应用。
脚本编写好了怎么通过WinSCP脚本来执行呢 ?
其实有些命令WinSCP并不能间接执行,须要通过关键字call 来润饰执行,比方下面的脚本中就能够通过call 来润饰cp,rm等命令。
在下面的upload_detail.bat脚本中退出:
open root:password@192.168.1.200:22call cd /mnt/farm_server/extensions/farm/property_configcall rm *.jsonput C:\Users\zzx\Desktop\PlanH5\farm\excel\out\data\*.jsoncall cd /mnt/farm_servercall ./transfer.shexit
这样就能够通过近程调用shell脚本来传输文件到其余服务器或是解决一些其余事件了。
五、WinSCP相干命令
WinSCP相干:
call 执行任意近程命令cd 扭转近程工作目录checksum 计算远端文件的校验码chmod 扭转近程文件权限close 敞开会话cp 复制远端文件echo 将参数显示为音讯exit 敞开所有会话并完结程序get 从近程目录下载文件到本地目录help 显示帮忙keepuptodate 在一个近程目录间断反映本地目录的扭转lcd 扭转本地工作目录lls 列出本地目录的内容ln 新建近程符号链接lpwd 显示本地工作目录ls 列出近程目录的内容mkdir 新建近程目录mv 挪动或者重命名近程文件open 连贯到服务器option 设置或显示脚本选项的值put 从本地目录上传文件到近程目录pwd 显示近程工作目录rm 删除近程文件rmdir 删除近程目录session 列出连贯的会话或者抉择流动会话stat 获取近程文件属性synchronize 用一个本地目录同步近程目录
如果有其余需要能够应用这些命令,然而我感觉有一个call就够了。。。。
2020年就要完结了,心愿本人能在明年更上一层楼。
加油!
脚本及安装包曾经上传到GitHub,
地址:https://github.com/zhuangzhen...