sudo
在Amazon Web Services上的EC2/VPC上的Ubuntu 14服务器上运行命令时出现以下错误.
sudo: unable to resolve host ip-xxx-xx-x-xx
我用x替换服务器的私有IP地址.
为了解决这个问题,我需要编辑/etc/hosts
文件.当我将以下行添加到hosts文件时:
127.0.0.1 ip-xxx-xx-x-xx
现在我没有得到错误.127.0.0.1之后的值解析为hostname
命令值.问题是我可能会创建一个AMI并在将来恢复服务器,因此私有IP将会改变.在AWS论坛中,他们建议添加一个脚本,该脚本使用新IP(hostname
值)自动更新hosts文件,以便在从AMI还原服务器或自动扩展时使用它.
如何使用hostname值更新hosts文件,因此我不需要担心将来出现的任何问题?
如果您出于某种原因无法DNS hostnames
在您的VPC上启用,那么您应该完全按照AWS论坛中的建议进行操作.编写脚本以自动更改/etc/hosts
文件.例:
#!/bin/bash LOCAL_HOSTNAME=$(curl http://169.254.169.254/latest/meta-data/local-hostname) cat << EOF >> /etc/hosts 127.0.0.1 $LOCAL_HOSTNAME EOF
注意:这将覆盖整个hosts文件,因此请确保在那里写下您需要的所有内容.
根据AWS文档,local-hostname
将返回类似的内容ip-10-251-50-12.ec2.internal
.如果这不是您想要的,请检查前面提到的文档中的其他可用元数据.
假设您不想要该.ec2.internal
部件,您可以使用自定义脚本来摆脱该部分cut
.例:
curl http://169.254.169.254/latest/meta-data/local-hostname | cut -d '.' -f1
有一些替代方案可以让它在启动时运行.我建议你给它打电话rc.local
(见这里和这里).不要忘记给脚本执行权限.