通过使用 zsh 脚本获取 EC2 IP 地址,SSH 进入 EC2
SSH into EC2 by using a zsh script to fetch EC2 IP Address
我想在我的 zprofile 中创建一个别名,它将根据名称标签获取 EC2 IP 地址,然后通过 SSH 连接到那个 machine。我正在使用 mac.
此 zsh 脚本成功检索了 EC2 的 IP 地址mac我想通过 ssh 进入:
aws ec2 describe-instances \
--filters "Name=tag:Name, Values=my-name" \
--query "Reservations[*].Instances[*].[PrivateIpAddress]" \
--output text
输出可能如下所示:some.ip.address
这个 zsh 脚本让我可以通过 SSH 连接到我的 EC2 machine:
alias ec2="ssh person@some.ip.address.us-east-1.place"
如何用第一个脚本的输出替换第二个脚本的 IP 地址?
谢谢!
可能最简单的方法是设置第二个别名,这样您就可以使用类似的东西:
alias get_ec2_ip='aws ec2 describe-instances --filters "Name=tag:Name, Values=my-name" --query "Reservations[*].Instances[*].[PrivateIpAddress]" --output text'
然后你可以使用 zsh 的 command substitution,像这样:
alias ec2='ssh person@`get_ec2_ip`'
请注意,在这里使用单引号非常重要,而不是双引号!否则,你在设置别名时运行 get_ec2_ip
,不是你想要的——你希望它保存文字字符串ssh person@`get_ec2_ip` 作为别名,这样 get_ec2_ip
就是 运行 每次你 运行 ec2
.
我想在我的 zprofile 中创建一个别名,它将根据名称标签获取 EC2 IP 地址,然后通过 SSH 连接到那个 machine。我正在使用 mac.
此 zsh 脚本成功检索了 EC2 的 IP 地址mac我想通过 ssh 进入:
aws ec2 describe-instances \
--filters "Name=tag:Name, Values=my-name" \
--query "Reservations[*].Instances[*].[PrivateIpAddress]" \
--output text
输出可能如下所示:some.ip.address
这个 zsh 脚本让我可以通过 SSH 连接到我的 EC2 machine:
alias ec2="ssh person@some.ip.address.us-east-1.place"
如何用第一个脚本的输出替换第二个脚本的 IP 地址?
谢谢!
可能最简单的方法是设置第二个别名,这样您就可以使用类似的东西:
alias get_ec2_ip='aws ec2 describe-instances --filters "Name=tag:Name, Values=my-name" --query "Reservations[*].Instances[*].[PrivateIpAddress]" --output text'
然后你可以使用 zsh 的 command substitution,像这样:
alias ec2='ssh person@`get_ec2_ip`'
请注意,在这里使用单引号非常重要,而不是双引号!否则,你在设置别名时运行 get_ec2_ip
,不是你想要的——你希望它保存文字字符串ssh person@`get_ec2_ip` 作为别名,这样 get_ec2_ip
就是 运行 每次你 运行 ec2
.