从分配SSH服务器变量本地计算机变量(Assign variable from SSH server

2019-10-18 03:56发布

我有两个脚本正在运行。 一个从客户端工作站上运行,并在服务器上调用的脚本。 我需要从服务器脚本变量,我想我可以做这种方式,但它不工作:

#!/bin/sh

local_var=""

ssh user@server " $local_var=\$server_var "

echo "$local_var"

我local_var的输出为null。 有没有办法做到这一点?

Answer 1:

尝试:

local_var=$(ssh user@server "echo ${server_var}")


Answer 2:

是的,你需要打印变量名和值,那么源的输出。 一个例子:

$ source <(ssh user@server 'echo foo=\"$bar\"')
$ echo $foo
bar

这适用于庆典,它可能无法在不支持重定向命令输出到贝壳工作source 。 对于那些贝壳,你可能需要先创建一个临时文件。



Answer 3:

我打算让3个假设:

  1. 远程机器是一台Linux机器。
  2. 你知道了远程脚本的实例的进程ID。
  3. 你想要的变量是在远程进程的环境。

假设上面,下面应该工作:

local_var=$( ssh user@server bash -c '
   while IFS="=" read -d '' -r name value; do
     [[ $name = "server_var" ]] && echo $server_var && break
   done' < /proc/$REMOTE_SCRIPT_PROC_ID/environ )


文章来源: Assign variable from SSH server to local machine variable