如何在 Linux 中获取 IPv6 IP 地址

Ank*_*yal 49 linux ipv6

我有一台 Linux 服务器,我想通过一个命令行找到主要的 IPv6 地址。

到目前为止我的命令:

$ ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'
Run Code Online (Sandbox Code Playgroud)

这表现了:

2001:410:0:39:221:28ff:fe46:eef4
fe80::221:28ff:fe46:eef4
Run Code Online (Sandbox Code Playgroud)

但我想要一次出现,以便输出显示:

2001:410:0:39:221:28ff:fe46:eef4
Run Code Online (Sandbox Code Playgroud)

小智 44

ip -6 addr
Run Code Online (Sandbox Code Playgroud)

将显示您的 IPv6 地址。

  • 这并不能解决上述问题。OP 想要一个命令行来检索一个 IPv6(这可能意味着主要的公共)。所以要么`ip -6 addr show dev eth0 | sed -n 's|^.*inet6 \([^ ]*/64\).*$|\1|p'` 或 `ip -6 addr show dev eth0 | awk '/inet6/{print $2}'` 可以用作基础,OP 可以针对他的特定用例扩展/编辑它们。 (7认同)

Qia*_*hen 11

/sbin/ip -6 addr | grep inet6 | awk -F '[ \t]+|/' '{print $3}' | grep -v ^::1 | grep -v ^fe80

的输出/sbin/ip -6 addr | grep inet6看起来像这样:

inet6 ::1/128 scope host 
inet6 2001:123:456:55f::1/64 scope global 
inet6 fe80::62eb:69ff:fed2:d2a6/64 scope link 
Run Code Online (Sandbox Code Playgroud)

awk -F '[ \t]+|/' '{print $3}'将每一行设置分隔符拆分为一个或多个空格或正斜杠。我们需要的部分是 3 美元。

grep -v ^::1 | grep -v ^fe80排除任何以::1或开头的行fe80


LUX*_*UXS 11

要仅获取 IPv6 地址,请使用仅适用于 IPv6 地址的ip addr命令和过滤器。-6

ip -6 addr
Run Code Online (Sandbox Code Playgroud)

如果您想指定网络适配器,您可以附加show dev eth0whileeth0应替换为您的网络适配器。

ip -6 addr show dev [eth0]
Run Code Online (Sandbox Code Playgroud)

由于您只查找外部 IP 地址,因此您应该添加scope global.

ip -6 addr show dev [eth0] scope global
Run Code Online (Sandbox Code Playgroud)

最后你把它输入到你的sed命令中。

ip -6 addr show dev [eth0] scope global | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'
Run Code Online (Sandbox Code Playgroud)


Red*_*ick 5

$ /sbin/ifconfig | grep inet6
      inet6 addr: fe80::2ff:19ff:fe60:1a00/64 Scope:Link
      inet6 addr: fe80::211:22ff:fe33:4455/64 Scope:Link
      inet6 addr: ::1/128 Scope:Host
Run Code Online (Sandbox Code Playgroud)

如果您想要随机选择一个 IPv6 地址

$ /sbin/ifconfig | grep inet6 | head -n 1
      inet6 addr: fe80::2ff:19ff:fe60:1a00/64 Scope:Link
Run Code Online (Sandbox Code Playgroud)

如果您想要第一个以太网适配器的最常用名称的 IPv6 地址

$ /sbin/ifconfig eth0 | grep inet6
      inet6 addr: fe80::2ff:19ff:fe60:1a00/64 Scope:Link
Run Code Online (Sandbox Code Playgroud)

如果你只想要地址

$ /sbin/ifconfig eth0 |  awk '/inet6/{print $3}'
fe80::2ff:19ff:fe60:1a00/64
Run Code Online (Sandbox Code Playgroud)