在工作中接到了使用bat命令定时上传文件到Linux的需求,总是需要手动输入密码挺麻烦,搞了两个比较简单的免密上传的方法。一、使用OpenSSH。二、使用FTP

一、使用OpenSSH

bat内容在:脚本内容

  1. 如果是win10系统的话可以直接在 设置–>应用–>应用和功能–>管理可选项–>添加功能 搜索OpenSSH client,然后安装。没有的话可以自行下载:https://www.openssh.com/

  2. 打开命令行(cmd),执行ssh-keygen,全部回车,生成本机的公钥和私钥,命令执行玩之后会提示生成文件的存储路径,我的在C:\Users\yu_llin\.ssh\路径下。

  3. 把Windows生成的id_rsa.pub文件改个名(id_rsa_temp.pub)然后复制到Linux系统上公钥私钥存储路径下 /.ssh/ 路径下(.ssh为隐藏文件,如果没有的话需要在Linux上安装ssh)
    SSH 服务器的安装:sudo apt-get install openssh-server
    SSH 客户端的安装:sudo apt-get install openssh-client
    生成秘钥:ssh-keygen -t rsa

  4. 将复制过来的文件内容追加到authorized_keys里,如果改文件不存在,自行创建一个就行,路径在 /.ssh/ 下(追加命令:cat id_rsa_temp.pub>>authorized_keys

  5. 执行脚本

二、使用FTP传输

1.单个文件

@echo off

set localPath=D:\temp\demo.txt

set host=***.***.**.**
set prot=22
set username=root
set password=root
set remotePath=/temp/

echo open %host% %prot%>ftp.up
echo %username%>>ftp.up
echo %password%>>ftp.up
echo cd %remotePath%>ftp.up
echo binary>>ftp.up
echo put %localPath%>>ftp.up
echo bye>>ftp.up
ftp -s:ftp.up

pause

2.全量文件上传(以.txt文件为例,可根据需要自行修改)

@echo off

set localPath=D:\temp\

set host=***.***.**.**
set prot=22
set username=root
set password=root
set remotePath=/temp/

echo open %host% %prot%>ftp.up
echo %username%>>ftp.up
echo %password%>>ftp.up
echo cd %remotePath%>ftp.up
echo binary>>ftp.up

echo prompt off>>ftp.up
echo lcd %localPath%>>ftp.up
echo *.txt>>ftp.up

for /d %%i in (*) do (
echo cd %remotePath%>>ftp.up
echo mikdir %%i>>ftp.up
echo cd %remotePath%%%i>>ftp.up
echo lcd %localPath%%%i>>ftp.up
echo mput *.txt>>ftp.up
)
echo bye>>ftp.up
ftp -s:ftp.up
del ftp.up /q

pause

如需上传文件并打印日志跳转此链接:
使用bat脚本上传文件至Linux并打印日志

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐