AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1443177
Accepted
howtouselinux
howtouselinux
Asked: 2022-11-30 22:09:01 +0800 CST2022-11-30 22:09:01 +0800 CST 2022-11-30 22:09:01 +0800 CST

如何在 AWS 中获取我的 Ubuntu 实例的 ip

  • 772

如何从 EC2 实例内部(即连接后)查看分配给 EC2 实例的公共 IP 地址?我可以看到分配给它的公共 IP 地址,只需在管理控制台中查看即可。

从AWS 文档中,我们可以使用以下 curl 命令获取公共 IP 地址。

$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data

但看起来它不起作用。

$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    56  100    56    0     0  28000      0 --:--:-- --:--:-- --:--:-- 56000
*   Trying 169.254.169.254:80...
* TCP_NODELAY set
* Connected to 169.254.169.254 (169.254.169.254) port 80 (#0)
> GET /latest/meta-data HTTP/1.1
> Host: 169.254.169.254
> User-Agent: curl/7.68.0
> Accept: */*
> X-aws-ec2-metadata-token: AQAAAEKVNCUB3KPoodSB0SFUkkn1aSah2MRUxAVQQx_3SeVBllVoFA==
> 
* Mark bundle as not supporting multiuse
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Accept-Ranges: bytes
< Content-Length: 324
< Content-Type: text/plain
< Date: Tue, 29 Nov 2022 11:29:43 GMT
< Last-Modified: Wed, 23 Nov 2022 18:36:36 GMT
< X-Aws-Ec2-Metadata-Token-Ttl-Seconds: 21600
< Connection: close
< Server: EC2ws
< 
ami-id
ami-launch-index
ami-manifest-path
auth-identity-credentials/
block-device-mapping/
events/
hostname
iam/
identity-credentials/
instance-action
instance-id
instance-life-cycle
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-keys/
reservation-id
security-groups
services/

知道如何在 EC2 实例中获取公共 IP 吗?

networking
  • 3 3 个回答
  • 59 Views

3 个回答

  • Voted
  1. Best Answer
    FedKad
    2022-12-01T01:11:13+08:002022-12-01T01:11:13+08:00

    一个更简单的curl命令是:

    $ curl -s http://169.254.169.254/latest/meta-data
    

    并将返回以下输出:

    ami-id
    ami-launch-index
    ami-manifest-path
    block-device-mapping/
    events/
    hostname
    identity-credentials/
    instance-action
    instance-id
    instance-life-cycle
    instance-type
    ipv6
    local-hostname
    local-ipv4
    mac
    metrics/
    network/
    placement/
    profile
    public-hostname
    public-ipv4
    public-keys/
    reservation-id
    security-groups
    services/
    

    正如您在此处看到的,获取“公共 IPv4”的 URL 将是:

    $ curl -s http://169.254.169.254/latest/meta-data/public-ipv4
    

    其他一些(shell 脚本)示例:

    localIP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)
    publicIP=$(curl -s http://169.254.169.254/latest/meta-data/public-ipv4)
    inst_type=$(curl -s http://169.254.169.254/latest/meta-data/instance-type)
    av_zone=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)
    

    另一方面,要使用系统命令获取本地 IPv4 地址和 IPv6 地址(AWS 不提供查询 IPv6 地址的 API),您可以使用:

    $ hostname -I
    

    请注意,除非您在外部服务器上请求它,否则无法获得公共 IPv4,例如“AWS 服务器”( http://169.254.169.254/) 或 Internet 上的服务器(如其他答案中提供的)。

    • 1
  2. aiziyou
    2022-12-01T05:38:16+08:002022-12-01T05:38:16+08:00
    • 对于私有 ip 地址,您可以使用 ifconfig 或 ip addr 命令等 Ubuntu 命令来获取它。您还可以使用 获取一个特定接口的 IP 地址ip addr show dev <interface name>。更多信息在这篇文章中解释。

      这是一个例子:

      $ ip addr  show dev eth0
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
          link/ether 02:3f:4d:eb:52:e7 brd ff:ff:ff:ff:ff:ff
          inet 10.1.0.143/24 brd 10.1.0.255 scope global dynamic noprefixroute eth0
             valid_lft 2166sec preferred_lft 2166sec
      
    • 对于公共 ip 地址,您可以使用aws ec2 命令。此命令将列出有关您的实例的详细信息,如磁盘信息、网络接口、aws 实例类型等。获取有关您的 ec2 实例的更多信息非常有帮助。 在运行此命令之前,您可能需要安装 awscli 。以下示例将根据私有 ip 地址过滤器列出实例详细信息。

      aws ec2 describe-instances --filters Name=private-ip-address,Values=10.6.10.199
      
    • 1
  3. matigo
    2022-12-01T00:59:55+08:002022-12-01T00:59:55+08:00

    我通常为此使用外部服务。如果您希望将服务器的 IPv4 地址记录在名为 的文件中ip_v4.txt,您可以这样做:

    wget -q -nv https://api.ipify.org -O ip_v4.txt
    

    如果您想要一个名为 的文件中的 IPv6 地址ip_v6.txt,您可以这样做:

    wget -q -nv https://api64.ipify.org -O ip_v6.txt
    

    当然,您可能需要自定义它以按照您喜欢的方式输出地址。

    这解决了使用 Amazon 的各种 API 的问题,并提供了一些更通用的东西,可以在任何基于 Linux 的服务器上运行,无论它托管在何处。

    • 0

相关问题

  • 如何设置 VLAN 转发?

  • 如何将主机 Ubuntu 上的 VPN (tun0) 网络适配器映射到 VirtualBox 来宾 Windows?

  • 如何限制下载/上传带宽?

  • 如何通过 Windows 网络共享文件?

  • 面板小程序以文本形式显示当前网络流量?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve