将变量传递给 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
我正在编写需要将变量传递给 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