Bash 在 EOF 上执行多个命令到远程服务器
我尝试从终端在远程服务器上对 docker 执行 openstack 命令。目的是获取openstack项目的id。
当条件为真时,我想获取id,但下面的脚本无法获取id。我不知道是否可以执行 EOF 语句的 if 条件
ret="$(ssh -qT root@server << EOF
docker exec openstack bash -c ". adminrc &&
if [ false ]; then openstack project create p_ops &>/dev/null
else :
fi
id_u=$(openstack user show u_ops | grep " id" | cut -d "|" -f3 | xargs)
openstack role add SwiftOperator --project p_ops --user $id_u
id_p=$(openstack project show p_ops | grep " id" | cut -d "|" -f3|xargs)
echo "$id_p""
EOF
)"
我得到输出:
Missing value auth-url required for auth plugin password
Missing value auth-url required for auth plugin password
usage: openstack role add [-h]
[--system <system> | --domain <domain> | --project <project>]
[--user <user> | --group <group>]
[--group-domain <group-domain>]
[--project-domain <project-domain>]
[--user-domain <user-domain>] [--inherited]
[--role-domain <role-domain>]
<role>
openstack role add: error: argument --user: expected one argument
我想要项目的 id:
echo $id_p
faafe2044c4235ac648faaceae5d1a3bf2a8f7a8ca8a765f5a9621a5e53d9162
I try from my terminal, to execute on remote server a openstack command to a docker. The purpose is to get the id of openstack project.
when condition is true, I want to get id, but the script below failed to get id. I don't know if I can execute if condition to EOF statement
ret="$(ssh -qT root@server << EOF
docker exec openstack bash -c ". adminrc &&
if [ false ]; then openstack project create p_ops &>/dev/null
else :
fi
id_u=$(openstack user show u_ops | grep " id" | cut -d "|" -f3 | xargs)
openstack role add SwiftOperator --project p_ops --user $id_u
id_p=$(openstack project show p_ops | grep " id" | cut -d "|" -f3|xargs)
echo "$id_p""
EOF
)"
I get the output :
Missing value auth-url required for auth plugin password
Missing value auth-url required for auth plugin password
usage: openstack role add [-h]
[--system <system> | --domain <domain> | --project <project>]
[--user <user> | --group <group>]
[--group-domain <group-domain>]
[--project-domain <project-domain>]
[--user-domain <user-domain>] [--inherited]
[--role-domain <role-domain>]
<role>
openstack role add: error: argument --user: expected one argument
I desired the id of project :
echo $id_p
faafe2044c4235ac648faaceae5d1a3bf2a8f7a8ca8a765f5a9621a5e53d9162
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以避免使用会给您带来问题的嵌套引号。
而不是复杂的句子:
你可以写:
You can avoid the use of nested quotes which are giving you problems.
Instead of the complex sentence:
you can just write: