使用 WinSCP 和批处理监视 SFTP 服务器上的更改

Posted

技术标签:

【中文标题】使用 WinSCP 和批处理监视 SFTP 服务器上的更改【英文标题】:Monitoring changes on SFTP server with WinSCP and batch 【发布时间】:2021-11-26 09:56:17 【问题描述】:

我想监控我们的 SFTP,以便在添加文件时向我们发送电子邮件。现在我尝试使用批处理脚本为if/else 设置条件,但批处理环境不接受我的条件。

我是批处理和自动化的新手,所以我首先尝试将 SFTP 文件与本地文件同步,然后运行批处理计划以尝试再次同步;如果确实如此,那么它将发送 na 电子邮件(我目前没有为电子邮件制作脚本,老实说我现在不知道该怎么做),如果它没有同步则退出脚本。

这是我的脚本:

option batch on
option confirm off
open sftp://x@sftp.x/ -privatekey=privateKey.ppk -hostkey="ssh-rsa 2048 x"
option transfer binary
if synchronize local "C:\Users\Administrateur\Desktop\x\x" "/x/x/rx" (
ECHO nouveau fichier ajouter au repertoir
)
else (ECHO aucun nouveau fichier exit
)

这是错误:

Commande inconnue 'if'.

【问题讨论】:

【参考方案1】:

添加-preview switch to your synchronize command 使其仅检查更改,而不是实际同步文件。

option failonnomatch on 添加到您的脚本中,使synchronize 命令报告没有差异作为错误。

option failonnomatch on
synchronize -preview local "C:\Users\Administrateur\Desktop\x\x" "/x/x/rx"

在实际的批处理文件中,check WinSCP exit code 判断,是否有差异。像这样的:

winscp.com /script=script.txt /log=script.log
if errorlevel 1 (
  echo Nothing to synchronize or other problem
) else (
  echo There are files to synchronize
)

如果您想发送电子邮件,请参阅 Emailing script results 的 WinSCP 指南。

【讨论】:

以上是关于使用 WinSCP 和批处理监视 SFTP 服务器上的更改的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 WinSCP 脚本从 SFTP 复制新文件

SSIS 包将文件从一个文件夹移动到 SFTP (WinSCP) 中的另一个文件夹(SSIS 的 SFTP 任务)

Openwrt上开启sftp,使用SecureCRT,WinSCp等传输文件

使用WinSCP的SFTP传输在/ command上工作但在/ script上失败

sudo 的 WinSCP 登录问题

如何使用密码或 SSH 指纹进行 SFTP 身份验证 WinSCP C# .NET 程序集