gpt4 book ai didi

linux - SSH远程机器并执行命令

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:41 29 4
gpt4 key购买 nike

我正在通过 sshing 连接到远程机器并执行命令,但我在远程机器上的 $PATH 设置为原始机器中用户的 $PATH,而不是 sshed 机器的 $PATH。但是如果我 ssh 到远程机器并执行 echo $PATH,它被正确设置为新机器中的登录用户

root@host1> ssh admin@remotemachine echo $PATH

这会打印用户的 PATH,在本例中是 host1 上的 root 而不是 remotemachine 上的 admin

root@host1> ssh admin@remotemachine 
admin@remotemachine's password: ****
echo $PATH

以上工作正常

基本上它不会改变远程机器上新用户的环境。不知何故,即使我登录到远程机器,它也保留了 host1 的 root 环境。如果我执行 ls -al/,它会显示来自远程机器的目录,这意味着我已登录到远程机器

最佳答案

让我们使用 set -x 来调试我们实际运行的内容:

$ set -x
$ ssh localhost echo $PATH
+ ssh localhost echo /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

带有 + 的行告诉我们,我们实际运行的命令是:

ssh localhost echo /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

不出所料,这也是我们返回的值,无论远程 PATH 是什么。

我们可以单引号命令以确保我们发送 echo $PATH 而不是 echo/usr/local/bin:... 到服务器:

$ ssh localhost 'echo $PATH'
+ ssh localhost 'echo $PATH'

现在 set -x 显示 ssh 正在使用未扩展命令而不是扩展命令运行,我们得到了远程 PATH作为返回。

关于linux - SSH远程机器并执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45684250/

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