将变量传递给 sftp 批处理

Passing variables to sftp batch

我正在编写需要将变量传递给 sftp 批处理的脚本。根据我搜索到的其他文档,我已经能够使用一些命令,但无法完全满足我的需要。

最终目标是像远程服务器上的文件测试操作员一样工作: ( if [-f $a ] then:; else exit 0;)

最终,我希望文件继续 运行 脚本,如果文件存在 (:),如果不存在则退出 0(不是退出 1)。远程机器是 Windows 服务器,而不是 Linux.

这是我拥有的:

注意 - 我试图传递的变量 $source_dir 会根据调用此函数的脚本的输入参数而变化。这和 ls 通配符是棘手的部分。我已经能够在查找特定文件时使其工作,而不仅仅是 "any" 文件。

    ${source_dir}= /this/directory/changes

    RemoteCheck () {

    /bin/echo "cd $source_dir" > someBatch.txt
    /bin/echo "ls *" >> someBatch.txt

    /usr/bin/sftp -b testBatch.txt -oPort=${sftp_port} ${sftp_ip}


    exit_code=$?;
    if [ $exit_code -eq 0 ]; then
        :
    else
        exit 0
    fi

可能有更好的方法来做到这一点,但我已经搜索了多个论坛,但还没有找到操纵它的方法。

感谢任何帮助,各位专家一直都非常有帮助!

您无法仅使用 OpenSSH 的退出代码来测试任何文件是否存在 sftp

您可以将 sftp 输出重定向到一个文件并解析它以查看是否有任何文件。

您可以使用 shell echo 命令将列表与输出的其余部分分隔开,例如:

!echo listing-start
ls
!echo listing-end