1

好的,所以我有一个脚本需要通过 SSH 执行一堆命令,但是如果提供的目标是本地路径而不是主机名,我还想允许它在本地运行相同的命令。

现在我可以轻松地确定我是否在本地操作,但我有一组非常复杂的命令要运行,远远超过直接作为参数提供给 ssh 的范围。

我想做的是:

if [ -n "$HOST" ]
    then
        ssh "$HOST"
fi

# Run some commands
# exit

但是,有一些明显的问题,例如我如何传递适当的变量并退出,而不会导致脚本在本地定位时提前结束。所以我不确定这是否可能,有没有办法使用实际远程运行的普通 shell 命令来执行上述操作?

如果没有,另一种方法是让我提取我需要运行到他们自己的 shell 脚本中的命令,并确保我的 ssh 命令复制 shell 脚本(如果它不存在)然后运行它,但我我也不知道该怎么做?我熟悉基本的 unix 命令,但不是这样的!

无论如何,如果可能的话,我将不胜感激有关最佳方法的任何建议,并提供详细示例。

4

2 回答 2

1

信任实际上不是问题,因为我已经为无密码 SSH 设置了公钥身份验证。

无论如何,似乎我最好的选择是将命令提取到 shell 脚本中并根据需要将其发送到服务器。也就是说,我认为这里的文档也可能允许我在不发送脚本的情况下执行此操作,尽管在需要时发送脚本可能是我所需工作负载的更有效选择。

这是我对此处文档的想法的示例:

if [ -n "$HOST" ]; then ssh "$HOST" <<- 'REMOTE_SESSION'; fi

    # Some commands

if [ -n "$HOST" ]; then REMOTE_SESSION; fi

主要困难是确保远程会话“块”中的命令结构正确,因为如果打开 SSH 连接,任何标准输入和标准输出都将位于远程服务器上。

于 2013-04-20T19:41:22.447 回答
0

看看远程shell。 http://en.wikipedia.org/wiki/Remote_Shell虽然有一些问题,比如如何处理安全问题。将密码存储在纯文本文件中不是您想要的。您还需要在计算机之间建立某种信任。如果您使用的是 linux/unix,请查看您的本地手册页。

于 2013-04-17T16:50:44.490 回答