因此,我已经通过ssh建立了到远程计算机的连接。现在我要做的是执行一些命令,抓取一些文件,然后将它们复制回我的主机。

我知道我可以跑步

ssh user@host "command1; command2;....command_n"

然后关闭连接,但是不使用上述语法怎么办?我有很多复杂的命令,其中包含大量的引号和字符,这些都是一团糟。

谢谢!

最佳答案

我立即想到的是为什么不创建脚本并将其推到远程计算机上,以使其在文本文件中本地运行?如果您出于某种原因不能这样做,我会在此摆弄,我认为使用HEREDOC可能会做得很好:

ssh -t jane@stackoverflow.com bash << 'EOF'
command 1 ...
command 2 ...
command 3 ...

EOF

而且似乎做对了。与您的Heredoc一起玩,以确保报价的安全,但这会变得棘手。我唯一能提供的其他东西(我完全不建议这样做)是您可以使用像perl这样的玩具来读写ssh流程,如下所示:
open S, "| ssh -i ~/.ssh/host_dsa -t jane@stackoverflow.com bash";
print S "date\n"; # and so on

但这是处理事情的一种非常糟糕的方法。请注意,您可以使用其他语言进行操作。

关于shell - 如何编写将通过ssh连接的设备上执行的命令的脚本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16976970/

10-14 20:19
查看更多