gpt4 book ai didi

shell - 通过SSH执行大量命令

转载 作者:行者123 更新时间:2023-12-02 14:39:24 25 4
gpt4 key购买 nike

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

现在,我可以确定是否在本地进行操作,而不会遇到太多麻烦,但是我要运行的命令集非常复杂,远远超出了直接作为ssh的参数提供的范围。

我想做的是这样的:

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

# Run some commands
# exit

但是,存在一些明显的问题,例如在本地定位时如何传递适当的变量并退出而不导致脚本提早结束。因此,我不确定是否可行,是否有办法使用实际上正在远程运行的常规shell命令来执行上述操作?

如果没有,替代方法是让我提取需要运行到其自己的Shell脚本中的命令,并确保我的ssh命令将Shell脚本复制到整个脚本(如果尚不存在)然后运行它,但是我我也不知道该怎么做?我熟悉基本的unix命令,但不是这样的!

无论如何,我将不胜感激关于最佳方法的任何建议,并在可能的情况下提供详细示例。

最佳答案

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

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

这是我在这里文档中所想到的示例:

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

# Some commands

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

主要困难在于确保远程 session “block”中的命令结构正确,因为如果打开SSH连接,则任何stdin和stdout都将位于远程服务器上。

关于shell - 通过SSH执行大量命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16065218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com