AWS有的示例网卡可能会因为系统不同镜像不同,所以网卡名字不同,一般取内网IP的shell不一定灵。
经过调试,如下shell可以稳定取出局域网内网的IP:
ip addr |grep inet |grep -v inet6|sed -n '2p'|cut -f 1 -d "/"|awk '{print $2}'
具体为什么这样写,每段含义是什么,自己有兴趣可以研究研究~
相关参考:https://blog.csdn.net/qq_22900611/article/details/78497458
以下解决方案由浩哥指点而来:
当你以为问题就这么简单的解决的时候,其实还有更简单的解决方案,AWS是在公司做过培训的,然而大概那时我走神儿了吧,没有注意到其中提到的EC2的metadata。
EC2本机的metadata是可以通过curl指令获取的,比如内网IP,就可以通过:
curl http://169.254.169.254/latest/meta-data/local-ipv4
直接取得。AWS的工程师是不是很6?metadata不止能获取内网IP,还有EC2的其他属性都能获取,列表如下:
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
iam/
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/
中文AWS参考文档:https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。