我在互联网上搜索了很多,但还没有找到任何有用的信息。PFTP 是否根本不允许您运行像“IF”和“WHILE”这样的循环?
如果是这样,请让我知道语法,我试着用头撞它。烦人的是,PuTTY 允许这些命令,但 psftp 似乎不允许,即使它们都来自同一个家族。我真的希望有一个解决方案!
我在互联网上搜索了很多,但还没有找到任何有用的信息。PFTP 是否根本不允许您运行像“IF”和“WHILE”这样的循环?
如果是这样,请让我知道语法,我试着用头撞它。烦人的是,PuTTY 允许这些命令,但 psftp 似乎不允许,即使它们都来自同一个家族。我真的希望有一个解决方案!
PSFTP 不是一种语言。它只是一个 SFTP 客户端。SFTP 本身只是一种用于在计算机之间移动文件的协议。如果您在远程计算机上设置了 SFTP,则表明您正在运行 SSH(因为 SFTP 通常与 SSH 服务器安装捆绑在一起)。
例如,您可以在 bash shell 脚本中进行测试,以查看该文件是否存在于远程服务器上,然后根据结果执行您的 psftp 命令。就像是:
#!/bin/bash
# test if file exists on remote system
fileExists=$(ssh user@yourothercomputer "test -f /tmp/foo && echo 'true' || echo 'false'")
if $fileExists; then
psftp <whatever>
fi
你可以把整个烂摊子粘在一个循环或什么东西上。这里发生的是我们正在向test -f /tmp/foo && echo 'true' || echo 'false'
远程计算机发送一个命令来执行。命令的标准输出被返回并存储在变量中fileExists
。然后我们只是测试它。
如果您在 Windows 中,您可以将其转换为批处理脚本并使用 plink.exe 发送命令,就像他们在此处所做的那样。或者,也许只是在您的计算机上使用 SSH 和 SFTP 客户端安装 cygwin 并使用上面的内容。
这里最大的收获是您将需要一个单独的脚本环境来执行循环并根据测试运行 psftp。