当前位置: 首页 > Linux

一键从windows上传文件到linux的小工具

时间:2023-04-06 07:14:06 Linux

1.前言坚持码字不易,记录学习心得。虽然工作很忙,但这只是偷懒的借口。2019年差不多一个月一篇,但是今年……只有4篇。难怪我觉得自己这一年进步不大。2020年即将结束,2021年我会坚持写更多的心得体会,记录和分享自己的所学。最近觉得在开发阶段,每次更新配置文件和上传jar包到linux很麻烦,于是去百度写了一个批处理脚本给自己用。(游戏的json配置文件放在项目外,方便游戏过程中在线更新配置)2、安装WinSCPWinSCP是Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能是在本地和远程计算机之间安全地复制文件。使用它的主要目的是使用它的命令通过批处理脚本一键更新要上传到服务器的文件。我下载了5.17.9版本。个人觉得版本问题不大,选择哪个版本就可以了。三、脚本编写1、编写脚本文件upload_to_server.batcdD:\software\WinSCPWinSCP.com/script=C:\Users\zzx\Desktop\PlanH5\farm\excel\upload_detail.bat/log=log.txtpauseline1:进入你的WinSCP安装目录第2行:指定dos命令程序WinSCP.com来运行我们winscp命令的另一个脚本。指定日志文件生成/log=log.txt,意义不大。如果有错误什么的,会在窗口显示出来,可以去掉。2.实际运行脚本文件upload_detail.batopenroot:password@192.168.1.200:22cd/mnt/farm_server/extensions/farm/property_configrm*.jsonputC:\Users\zzx\Desktop\PlanH5\farm\excel\out\data\*.jsonexit第一行:开启一个ssh连接,格式:user:password@ip:222,第三、四行是执行命令,其中put是WinSCP的命令,把你本地windows的目录文件放到cd到刚才的目录。通过这么一个简单的脚本,我可以直接把自己打好的json文件上传到服务器,不用压缩,通过xshell丢进去解压。(别问Jenkins,还没呢TT)4.增强版那如果我们想做一些其他的操作呢?或者做一些其他的问题?比如我想在更新到内网的同时使用shell脚本更新到外网环境怎么办?如果要在shell脚本中使用scp命令,必须先安装expect。yum-yinstallexpect写入shell脚本transfer.sh#!/usr/bin/expectspawnscp-r/mnt/farm_server/extensions/farm/property_configroot@ip:/tmpexpect"*password:"send"password\n"expecteof必须在expect环境中用#!/usr/bin/expect指定,否则无法运行。spawn:启动一个新进程send:用于向进程发送一个字符串expect:从进程接收到字符串执行第1行后,会通过expect检测收到输入密码的通知,此时发送密码通过sendto\nEnd到进程。使用expecteof的结尾。脚本写好后,如何通过WinSCP脚本执行呢?事实上,有些命令是WinSCP不能直接执行的,需要通过关键字call来修改执行。比如上面的脚本中,可以通过call修改cp、rm等命令。在上面的upload_detail.bat脚本中添加:openroot:password@192.168.1.200:22callcd/mnt/farm_server/extensions/farm/property_configcallrm*.jsonputC:\Users\zzx\Desktop\PlanH5\farm\excel\out\data\*.jsoncallcd/mnt/farm_servercall./transfer.shexit这样就可以远程调用shell脚本向其他服务器传输文件或者处理一些其他的事情。5.WinSCP相关命令WinSCP相关:call执行任何远程命令cd更改远程工作目录校验和计算远程文件校验和chmod更改远程文件权限close关闭会话cp复制远程文件echo以消息形式显示参数exit关闭所有会话并结束程序get从远程目录下载文件到本地目录help显示帮助keepuptodate在远程目录中不断反映本地目录的变化lcd更改本地工作目录lls列出本地目录的内容ln创建一个newremotesymboliclinklpwd显示本地工作目录lscolumn输出远程目录的内容mkdir新建一个远程目录mv移动或重命名远程文件open连接到服务器选项设置或显示脚本选项的值put上传文件从本地目录到远程目录pwd显示远程工作目录rm删除远程文件rmdir删除远程目录session列出已连接的会话或选择一个活动会话stat获取远程文件属性synchronize将远程目录与本地目录同步如果您有其他需要的话,可以使用这些命令,但是我觉得调用一次就够了。...2020年即将结束,希望明年能更上一层楼。快点!脚本和安装包已经上传到github,地址:https://github.com/zhuangzhen...