linux - PSFTP 可以执行循环吗?

标签 linux while-loop psftp

我在互联网上搜索了很多,但还没有找到任何有用的信息。 PFTP 是否根本不允许您运行“IF”和“WHILE”之类的循环?

如果是这样,请让我知道语法,我试着用我的头来反对它。恼人的是,PuTTY 允许这些命令,但 psftp 似乎不允许,即使它们都来自同一个系列。我真的希望有一个解决方案!

最佳答案

PSFTP 不是一种语言。它只是一个 SFTP 客户端。 SFTP 本身只是一种在计算机之间移动文件的协议(protocol)。如果您在远程计算机上设置了 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 发送命令 kind of like they do here .或者可能只是在您的计算机上使用 SSH 和 SFTP 客户端安装 cygwin,然后使用上面的内容。

这里最大的收获是您需要一个单独的脚本环境来执行循环并根据测试运行 psftp。

关于linux - PSFTP 可以执行循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40309478/

相关文章:

java - LWJGL 键盘循环

如果函数不起作用的 Java 扫描器

python - 从 while 循环返回而不退出它 python

batch-file - 在 PSFTP 中使用 'for' 命令查找并下载 SFTP 服务器上的最新文件

powershell - psftp 说 "The server' s 主机 key 未缓存在注册表中”

ssh - 响应 y(es) 到 psftp 主机 key 提示

linux - 如何使用sed或awk处理指定列的内容?

python - 测试 Windows 在 Linux 上对 Python 多处理的实现

c - 段错误仅出现在 GDB 中

linux - 如果 coreutils 排序中的数值相等,是否保留原始顺序?