我想在我的 zprofile 中创建一个别名,它将根据名称标签获取 EC2 IP 地址,然后通过 SSH 连接到该计算机。我用的是Mac。
此 zsh 脚本成功检索我想要通过 ssh 访问的 EC2 机器的 IP 地址:
aws ec2 describe-instances \
--filters "Name=tag:Name, Values=my-name" \
--query "Reservations[*].Instances[*].[PrivateIpAddress]" \
--output text
输出可能如下所示:
some.ip.address
这个 zsh 脚本可以让我通过 SSH 连接到我的 EC2 机器:
alias ec2="ssh [email protected]"
如何用第一个脚本的输出替换第二个脚本的 IP 地址?
谢谢!
最简单的方法可能是设置第二个别名,这样你就可以得到类似的东西:
alias get_ec2_ip='aws ec2 describe-instances --filters "Name=tag:Name, Values=my-name" --query "Reservations[*].Instances[*].[PrivateIpAddress]" --output text'
然后你可以使用 zsh 的 命令替换,就像这样:
alias ec2='ssh person@`get_ec2_ip`'
请注意,使用单引号非常重要,而不是双引号!否则,您将在设置别名时运行
get_ec2_ip
,这不是您想要的 - 您希望它将文字字符串 ssh person@`get_ec2_ip` 保存为别名,以便每次都运行 get_ec2_ip
你跑ec2
。