一、序言
保持码字记录学习心得也是一件不容易的事件,平时尽管工作比较忙,但也只是本人偷懒的一个借口罢了。19 年差不多还一个月一篇, 往年 … 只有 4 篇。难怪感觉本人往年提高不大。2020 曾经到尾了,我会在 2021 年保持多写心得, 将本人学到的货色记录下来并分享进去。
最近感觉开发阶段,每次要繁琐的去更新配置文件和上传 jar 包到 linux 比拟麻烦,所以就百度了下,写了个批处理脚本自用。(游戏的 json 配置文件搁置到我的项目外,不便游戏期间在线更新配置)
二、装置 WinSCP
WinSCP 是一个 Windows 环境下应用 SSH 的开源图形化 SFTP 客户端。同时反对 SCP 协定。它的次要性能就是在本地与近程计算机间平安的复制文件。
应用它最次要是为了应用它的命令,通过批处理脚本一键将要上传的文件更新到服务器上。
我下载的是 5.17.9 版本。个人感觉版本问题不大,抉择任意一个版本就能够了。
三、脚本编写
1. 编写脚本文件 upload_to_server.bat
cd D:\software\WinSCP
WinSCP.com /script=C:\Users\zzx\Desktop\PlanH5\farm\excel\upload_detail.bat /log=log.txt
pause
第 1 行:进入到你 WinSCP 的装置目录
第 2 行:指定 dos 命令程序 WinSCP.com 去运行咱们的 winscp 命令的另一个脚本。指定日志文件生成 /log = log.txt,没太多意义,如果有报错什么的会在窗口显示的,去掉也行。
2. 理论运行脚本文件 upload_detail.bat
open root:password@192.168.1.200:22
cd /mnt/farm_server/extensions/farm/property_config
rm *.json
put C:\Users\zzx\Desktop\PlanH5\farm\excel\out\data\*.json
exit
第 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/expect
spawn scp -r /mnt/farm_server/extensions/farm/property_config root@ip:/tmp
expect "*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:22
call cd /mnt/farm_server/extensions/farm/property_config
call rm *.json
put C:\Users\zzx\Desktop\PlanH5\farm\excel\out\data\*.json
call cd /mnt/farm_server
call ./transfer.sh
exit
这样就能够通过近程调用 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…