我有一台 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 地址。
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 eth0
whileeth0
应替换为您的网络适配器。
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)
$ /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)
归档时间: |
|
查看次数: |
144047 次 |
最近记录: |