通过bash中的ssh将局部变量传递给远程

时间:2017-08-08 19:23:59

标签: bash ssh

我在stackoverflow中经历了几个链接,但似乎没有什么对我有用。

这是我的情况: 我有一个bash脚本,我回显一些env变量,也有一个数组。我使用这个数组来获得一个基于键的值,这是另一个env变量。我想对一组远程服务器做同样的事情,所以我循环通过'所有远程服务器和通过ssh运行这些命令。问题是,我不确定如何传递此数组,以便远程服务器上的命令将使用其本地env变量中的键并获取值。

这是我的代码 -

declare -A arr
arr["key1]=val1
arr+=( ["key2"]=val2 ["key3"]=val3)

echo "$HOSTNAME, ${arr[${env1}]}"

for srv in $servers; dp
   ssh -l user@pswd $srv 'echo $HOSTNAME, ${arr[${env1}]}' 2>/dev/null
done

我需要单引号,因为我想在远程服务器上扩展所有变量,但$ arr除外。我怎么能做到这一点?

根据Passing a variable to a remote host in a bash script with ssh and EOF中的示例,我的情况并不起作用。

这就是我所做的: - 用双引号替换$ arr,但由于该地图中的密钥需要从远程服务器扩展/获取,因此这种方法不起作用。 / p>

declare -A arr
arr["key1]=val1
arr+=( ["key2"]=val2 ["key3"]=val3)

echo "$HOSTNAME, ${arr[${env1}]}"

for srv in $servers; dp
   ssh -l user@pswd $srv 'echo $HOSTNAME, '"${arr[${env1}]}" 2>/dev/null
done

0 个答案:

没有答案