记录 SFTP 批处理

log a SFTP batch process

我有一个简单的批处理过程,可以将文件 SFTP 到 SFTP 服务器。批处理代码在这里:

option batch abort
option confirm off
open sftp://server -hostkey="ssh-rsa 2048 00:aa:00:aa:dd:11:22:11:22:00:55:66:ee:dd:65:dd" 
cd \inbound\

put -transfer=ascii c:\apps\ftpfiles\myfile-2015-07-29.txt
exit

我想将任务的日志(成功、错误)记录在一个单独的日志文件中。

我试过把它改成这样:

@Rem ****************************************
@Rem  SFTP
@Rem ****************************************

@Rem Send required log to c:\apps\ftplogs\benftp01.log

@echo *** SFTP Process *** >> c:\apps\ftplogs\benftp01.log
@echo RUN DTTM : 29-07 >> c:\apps\ftplogs\benftp01.log

Rem  Create Windows SFTP Script 


@echo Starting FTP the PGP file... >> c:\apps\ftplogs\benftp01.log


    option batch abort
    option confirm off
    open sftp://server -hostkey="ssh-rsa 2048 00:aa:00:aa:dd:11:22:11:22:00:55:66:ee:dd:65:dd" 
    cd \inbound\

    put -transfer=ascii c:\apps\ftpfiles\myfile-2015-07-29.txt
    exit


@echo  *** SFTP End ***  >> c:\apps\ftplogs\benftp01.log

运行 上面的脚本结果是无效函数。有线索大师吗?

我终于解决了这个问题,

因此,当您使用 SFTP 文件传输时,在脚本的一侧添加日志记录选项会更加困难,并且取决于脚本所使用的第 3 方客户端(如 OpenSSH 或 WinScp)的类型不一样了因此,您需要强制调度程序在操作触发器选项中制作日志文件。然后你可以在那里添加一个参数并将其作为参数

/log="c:\apps\ftpLogs\benftp01.log"

我的情况有些不同。我调用 sftp.exe 的脚本捕获程序的所有输出。但是,当您对 运行 SFTP 批处理脚本使用 -b 命令行参数时,sftp.exe 将自身放入 'quiet mode',因此我的日志没有显示每个文件的详细信息。

我的解决方案是添加 -N 命令行参数。这是手册中对该选项的描述:

-N Disables quiet mode, e.g. to override the implicit quiet mode set by the -b flag.