0

我在此处将变量从 SSH 服务器分配到本地机器变量的另一个问题从未成功回答,我不确定如何“碰撞”该问题以获得更多视图,但如何将本地变量的值设置为该值ssh 服务器上的变量?

#!/bin/sh

ssh_cmd="ssh-t -o StrictHostKeyChecking=no -o ControlPath=~/.ssh/master-$$ -o ControlMaster=auto -o ControlPersist=10"

local_var=""

$ssh_cmd user@server " server_var=\"test\" "

local_var=$($ssh_cmd user@server 'echo $server_var')

echo $local_var

这将导致空值。

编辑

我正在使用 ssh 连接共享,我认为整个会话(连同连接都是共享的),因此我正在建立初始连接并设置变量,然后重新连接到该会话以回显设置的变量。

我在 ssh 服务器上有一个程序,用于检索虚拟机的 IP 地址。我的本地脚本需要这个地址,以便我从本地脚本对虚拟机运行一些东西。

ssh 服务器不仅仅是获取 IP 地址,但我需要在本地脚本中了解这一功能。

4

2 回答 2

2

如果没有该进程显式共享它,通常不可能(忽略调试器技巧)在正在运行的进程的地址空间中找出变量的值。它可以将值写入磁盘,并且您可以从另一个进程(本地运行或通过ssh)读取该文件。

于 2013-06-06T18:58:04.050 回答
0

你的第二个例子,local_var=$(ssh user@server "echo \${server_var}")对我有用。当你像这样调用 ssh 时,你确定你试图读取的变量是设置的吗?请记住,当您将命令传递给 时ssh,它会创建一个非交互式 shell,这会导致不同的 shell 初始化(并且通常设置的变量更少)。

于 2013-06-06T18:50:34.633 回答