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

Related Posts: AWS EC2 shell脚本取内网IP :

avatar