gpt4 book ai didi

bash - 从标签设置 amazon ec2 主机名的 shell 脚本

转载 作者:行者123 更新时间:2023-11-29 09:49:03 24 4
gpt4 key购买 nike

我正在尝试从标签“Name”设置 amazon EC2 主机名

并找到the answer从实例数据中提取标签。

ec2-describe-tags \
--filter "resource-type=instance" \
--filter "resource-id=$(ec2-metadata -i | cut -d ' ' -f2)" \
--filter "key=Name" | cut -f5

结果是:

+------------+--------------+------+--------+
| resourceId | resourceType | key | value |
+------------+--------------+------+--------+
| i-1xxxxxxx | instance | Name | dev200 |
+------------+--------------+------+--------+

我可以看到我快到了,但是如何从上面的结果中获取值 (dev200)?然后我可以将它用于:

echo $HOSTNAME > /etc/hostname

附注我在实例上有 BASH,但我完全迷失在 bash document 中.有人可以指出正确的段落吗?

最佳答案

经过一些错误和试验后,脚本开始运行:

#!/bin/bash
hostname=`ec2-describe-tags --filter "resource-type=instance" \
--filter "resource-id=$(ec2-metadata -i | cut -d ' ' -f2)" \
--filter "key=Name" | grep Name`

IFS="|" read -ra NAME <<< "$hostname"
hostname=${NAME[4]}
echo $hostname

使用 IFS 将字符串解析为数组,幸运的是我知道第 4 个元素始终是主机名。

编辑(2012 年 12 月 20 日):在这篇文章发布后的短时间内,一些相关的 ec2 命令行工具已被修改,标志被更改或弃用(例如,上面的 -i 标志不再出现在当前版本的 ec2metadata 上工作)。牢记这一点,这是我用来获取当前机器的“​​名称”标签的命令行脚本(无法与脚本的其余部分对话):

ec2-describe-tags --filter "resource-type=instance" --filter "resource-id=$(ec2metadata --instance-id)" | awk '{print $5}'

在 Debian/Ubuntu 上,您需要apt-get install cloud-utils ec2-api-tools 才能使这些工具正常工作(后者仅适用于 Ubuntu Multiverse)。

关于bash - 从标签设置 amazon ec2 主机名的 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12268986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com