如何使用WinSCP命令创建一个自动文件下载和上传工具。
出版日期:2020年12月9日。
INFOMARTION > 如何使用WinSCP命令创建一个自动文件下载和上传工具。
概述。
使用WinSCP命令创建一个自动文件下载和上传工具。 使用命令提示符执行WinSCP提供的命令。 毫不奇怪,WinSCP提供了命令。 你通常使用 "WinSCP.exe",但 "WinSCP.com "也可以使用。 你几乎不会在快捷方式目的地中看到 "C:\Program Files (x86)\WinSCP "文件夹,因为你通常基本上是从快捷方式中打开它,但如果你看一下快捷方式目的地,"WinSCP.com "也应该存放在那里。 这是该工具的创建地。
目录
1. 什么是WinSCP命令?
WinSCP命令是一个允许你执行你通常在GUI中执行的WinSCP操作的命令。 这种操作,你通常会在屏幕上操作,通过命令的方式进行。
1-1. 你可以做什么。
你可以下载和上传文件,创建文件夹,调用shell命令和许多其他东西。
可能经常使用的命令包括。
open・・・用于连接。
get・・・用于下载文件。
put・・・用于上传文件。
exit・・・用于切割。
1-2. 你不能做什么。
基本的文件下载和上传是可能的,但使用该系统后,似乎很难控制细节。
例如,"检查一个文件的更新日期并获取一个具有指定更新日期的文件 "似乎很难做到。
如果你想给要操作的文件附加复杂的条件,你可以用 "调用 "命令调用shell,这可以用Windows命令、Linux命令等来实现。
2. 自动下载工具
我们希望创建一个工具,能够真正自动下载放置在Linux服务器上的日志。
2-1. 使得
创建一个具有以下条件的工具。
・Windows 10作为执行环境。
・要收购的服务器是Linux。
・IP地址为192.168.50.10。
首先,创建一个bat文件作为激活的起点。
@setlocal enabledelayedexpansion
@set time2=%time: =0%
@set MKDIR_NAME=%date:~0,4%%date:~5,2%%date:~8,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%
@set FOLDER=%~dp0%MKDIR_NAME%
@mkdir %FOLDER%
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER%
除了最后一行,其余的过程都是Windows命令。 内容。
@setlocal enabledelayedexpansion
延迟的环境变量的设置。 简而言之,这种描述可以防止为一个变量设置一个可能不会被反映的值。
@set time2=%time: =0%
@set MKDIR_NAME=%date:~0,4%%date:~5,2%%date:~8,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%
@set FOLDER=%~dp0%MKDIR_NAME%
从当前时间获取yyymmddhmmss,最后将其放入FOLDER变量的过程。
@mkdir %FOLDER%
在执行批处理的文件夹下直接创建一个文件夹'yyyymmddhmmss'。
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER%
WinSCP.com(WinSCP命令)。 执行时,在批处理文件存放的同一文件夹中执行 "ftp.txt "中列出的命令。 传递你刚刚创建的文件夹路径作为参数。
这样就完成了调用者文件的创建。 然后在 "ftp.txt "中描述了WinSCP命令。
option batch on
option transfer binary
open test:testpassword@192.168.50.10
get /var/log/httpd/access_log %1%\
close
exit
内容。
option batch on
对于需要查询的流程,系统会自动假定选择了 "否",并自动执行该流程。 如果你包括这个,它将自动覆盖任何重复的文件名。 (你可以创建一个文件夹 "yyyymmddhmmss",把文件放在那里,这样就不会出现重复的文件名了。)
option transfer binary
该设置是以二进制模式传输数据。
open test:testpassword@192.168.50.10
'username:pass-word@IP address'. 连接到IP地址 "192.168.50.10"。
get /var/log/httpd/access_log %1%\
将'/var/log/httpd/access_log'存储在'yyyymmddhhmmss'文件夹中。('%1%'是file_get.bat中传递的参数。)
也可以使用正则表达式,所以如果你写"/var/log/httpd/*",整个日志都可以被检索到。
close
exit
这是一个断开连接的过程。
这样就完成了该工具的创建。
2-2. 实施准备
在执行前要进行初步的指纹鉴定。
如果该服务器从未通过WinSCP连接过,你会被问到是否可以安全连接。 如果你按下 "是",就会在一个叫做Windows注册表区域的地方留下按 "是 "的记录。 这确保了系统不会被第二次检查。 在运行该工具时,有必要提前进行,并在注册表区域保存有关服务器的信息,以确保安全连接,因此在命令提示符下运行以下命令。
"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒系统提示你作出反应,输入 "Y"。
close
exit
exit
'test:testpassword@192.168.50.10'应替换为'username:password@IP address'。
这样就完成了初步准备工作。
2-3. 实施
最后,现在是实施的时候了。 双击 "file_get.bat"。
如果创建了 "yyyymmddhhmmss "文件夹并将日志保存在该文件夹中,则成功。
3. 自动上传工具
下一步是创建一个工具,把文件放在Linux服务器上。 基本结构将与下载工具相同。
3-1. 使得
创建一个具有以下条件的工具。
・Windows 10作为执行环境。
・目标服务器是Linux。
・IP地址为192.168.50.10。
首先,创建一个bat文件作为激活的起点。
@setlocal enabledelayedexpansion
@set FOLDER_NAME="put_files\*"
@set FOLDER=%~dp0%FOLDER_NAME%
@set PUT_FOLDER="/tmp/"
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0put_ftp.txt /parameter %FOLDER% %PUT_FOLDER%
由于在自动下载工具中已经解释过了,所以省略了一点解释,但过程是将文件存储在'put_files'文件夹中,在'/tmp/'执行批处理文件的同一文件夹中。 实际的存储过程在 "put_ftp.txt "中描述。
option batch on
option transfer binary
open test:testpassword@192.168.50.10
put %1% %2%
close
exit
"put %1%\ %2%"命令根据作为参数传递的 "源文件 "和 "目标文件夹 "上传文件,尽管省略了一点解释,因为这在自动下载工具中也有解释。
3-2. 实施准备
与自动下载工具一样,指纹在执行前会被提前检查。(如果自动下载工具已经运行过一次,则不需要。)
在命令提示符下执行以下命令。
"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒系统提示你作出反应,输入 "Y"。
close
exit
exit
'test:testpassword@192.168.50.10'应替换为'username:password@IP address'。
这样就完成了初步准备工作。
3-3. 实施
最后,现在是实施的时候了。 双击 "file_put.bat"。
如果存储在'put_files'中的文件被转移到'/tmp/'文件夹,则成功。
4. 其他可能经常使用的命令
我们已经介绍了基本的下载和上传,但还想介绍其他可能经常使用的命令。
4-1. 密钥认证
早些时候,你根据以下描述用密码认证登录。
open test:testpassword@192.168.50.10
'open username:password@IP address'. 对于密钥认证,适用于以下情况。
open test@192.168.50.10 -privatekey=id_rsa.ppk
'-privatekey=id_rsa.ppk'是钥匙的路径。 由于它被列为相对路径,因此假定密钥(id_rsa.ppk)也在可执行文件(bat文件)所在的文件夹中。 例如,如果钥匙直接位于C盘下,写"-privatekey=C:\id_rsa.ppk"。
4-2. 呼叫外壳
要通过WinSCP命令调用shell,请按以下方式编写。
option batch on
option transfer binary
open test:testpassword@192.168.50.10
call sh /tmp/test.sh
close
exit
test.sh'被'call sh /tmp/test.sh'执行。 也可以传递参数。 当传递参数时,写成 "call sh /tmp/test.sh param1"。
5. 摘要
已经介绍了WinSCP命令。
如果你通常每天使用WinSCP GUI来记录和上传文件,你可以通过创建本文所述的工具来实现自动化。 这可能是一个小任务,但会占用很多时间,除非是每天都做。 我们鼓励你创造工具来提高效率。
谢谢你一直看到最后。