将变量传递给sftp批处理

时间:2016-05-18 20:33:20

标签: bash shell sftp

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

最终目标是在远程服务器上类似于文件测试运算符:  ( if [-f $a ] then:; else exit 0;)

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

以下是我所拥有的:

注意 - 我尝试传递的变量$source_dir会根据调用此函数的脚本的输入参数进行更改。这和ls通配符是棘手的部分。我在寻找特定文件时能够使它工作,但不仅仅是"任何"文件。

    ${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

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

任何帮助都表示赞赏,大师们一直非常乐于助人!

1 个答案:

答案 0 :(得分:1)

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

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

您可以使用shell echo命令从输出的其余部分界定列表,如:

!echo listing-start
ls
!echo listing-end