这两个问题让我抓狂,而且我没有很好的 ssh 专业知识。 (但我怀疑这仅与重定向有关)
问题是,
您想要将调用的文件中的多行输入传递
abc.txt
给ssh
命令。完成执行此操作所需的命令
$ssh _ _ abc.txt
(只有两个字符)(详细解释会有所帮助)
和
您想要将多行输入从名为 Remote.txt 的文件传递到,
ssh
但后续输入中的所有前导制表符都应被删除。完成命令来执行此操作
$ssh _ _ _ Remote.txt
答案1
传递来自 a 的输入当地的文件到ssh
,您应该使用输入重定向,如下所示:
ssh user@server < abc.txt
你确定这_
一定是一个单独的角色吗?在这种情况下,如果x
配置~/.ssh/config
为某个 user@host 的别名,则这是可能的:
ssh x < abc.txt
我无法回答问题2,因为我不太明白。我想 Remote.txt 在遥控器上。
根据第二个问题,我认为 Remote.txt 是远程端的文件,在这种情况下命令应采用以下形式:
ssh user@server "bash < Remote.txt"
...但这不符合问题描述,_ _ _
当然要删除尾随选项卡还需要更多,例如:
ssh user@server "bash < <(sed -e 's/^[ ]*//' Remote.txt)"
换句话说这才不是回答第二个问题。我希望这可以帮助您理解与ssh
.
编辑
再次阅读 Q 后,由于它说“将多行输入传递到 ssh”,表明我们必须再次使用重定向到 ssh,在这种情况下文件必须是本地的。
ssh user@server < <(sed 's/^[ ]*//' Remote.txt)
但同样,我认为这不符合以下形式的答案ssh _ _ _ Remote.txt
答案2
答1.
$ssh user@server cat abc.txt
答2.
$ssh user@server "sed 's/^[ ]//g' Remote.txt"
答案3
对于第一部分:
$ssh << abc.txt
对于第二部分:
$ssh <<- remote.txt