首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在本地环境ssh命令中分配bash脚本变量

在本地环境ssh命令中分配bash脚本变量
EN

Stack Overflow用户
提问于 2015-06-24 00:27:44
回答 1查看 200关注 0票数 1

我遵循教程,在bash脚本中通过ssh运行几个命令。但是现在我想要获得我正在运行的ssh命令的输出,将其保存在一个变量中,然后在下一个命令中使用。

代码语言:javascript
复制
 #!/bin/bash        
 ssh -t $VM_IP_ADDRESS bash -c "'

 export NET_ID=nova network-list | egrep $SUBNET_NAME | get_field 1

 nova boot $INSTANCE1_NAME --flavor m1.small --image $UBUNTU_IMAGE_NAME --key-name $KEY_PAIR_NAME --security-groups default --nic net-id=$NET_ID
'"

我想在本地环境中设置NET_ID,然后在下一个命令中使用它。现在,当我运行这个程序时,我得到了一个错误:

代码语言:javascript
复制
bash: line 17: export: `network-list': not a valid identifier

但是我已经检查过了,这个命令在目标机器上给出了正确的答案。

代码语言:javascript
复制
nova network-list | egrep test_net | get_field 1

更新:

使用此命令,NET_ID变量将在目标机器环境中设置,但我希望在本地machin中设置它。

代码语言:javascript
复制
export NET_ID=\$(nova network-list | egrep $SUBNET_NAME | get_field 1)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-24 00:36:16

您可能希望这样做(运行在本地计算机上的脚本):

代码语言:javascript
复制
#!/bin/bash

user=<remote-username>
ip=<remote-ip>
SUBNET_NAME=<you-know-the-value>

export NET_ID=$(ssh $user@$ip "nova network-list | egrep $SUBNET_NAME | get_field 1")
# Now, do anything with the $NET_ID on your local machine.

警告:NET_ID变量仅在脚本和脚本启动的任何子进程中可见。您不能将它导出到父环境(如果这是问题的话)。

Update:最终适用于OP的解决方案:

代码语言:javascript
复制
NET_ID=$(ssh -t $VM_IP_ADDRESS bash -c "' \
<commands>
nova network-list | egrep $SUBNET_NAME | get_field 1; \
<commands> '")

echo $NET_ID
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31015661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档