获取IP地址的Shell命令?

opi*_*rce 27 linux ubuntu bash command-line-interface ip-address

是否有 bash 命令来查找 Ubuntu 机器的 IP 地址?我需要找到 IP 地址,以便稍后通过 ssh 进入机器。

mpb*_*och 34

/sbin/ifconfig -a


Rob*_*her 27

您可以使用:

/bin/ip addr
Run Code Online (Sandbox Code Playgroud)

  • 你可以通过运行`ip a`来缩短它。 (4认同)
  • @opierce 您已将 mpbloch 的答案标记为正确,但作为仅供参考,您应该使用此答案,因为这是 iproute2 套件的一部分。`ifconfig` 现在正在分阶段进行。 (3认同)

nik*_*nik 22

如果您正在使用内部地址,请检查

curl http://myip.dnsomatic.com
Run Code Online (Sandbox Code Playgroud)

在 unix shell 上可能是个好主意。
或者,只需将该 URL 插入浏览器即可。


如果您从“ ifconfig -a”结果中得到不同的答案,
ifconfig给出了您的内部地址——这在外部可能不起作用。


即使一切看起来都很好,您也可以设置一个防火墙来禁止传入的ssh连接。
那时你应该从机器上的浏览器尝试感兴趣的端口,

http://www.canyouseeme.org/
Run Code Online (Sandbox Code Playgroud)

这将通过以下方式确认连接,

  • 外部 IP 地址(在该页面上显示给您)
  • NAT、端口转发
  • 防火墙

  • +1 为`curl http://myip.dnsomatic.com` (3认同)

Jam*_*mes 19

/bin/hostname -i

  • @lrkwz 评论的更短的替代方案`/bin/hostname -I` (5认同)
  • 在这种情况下,我建议使用 ```hostname --all-ip-addresses```。显示主机的所有网络地址。此选项枚举所有网络接口上的所有配置地址。环回接口和 IPv6 链路本地地址被省略。与选项 -i 相反,此选项不依赖于名称解析。不要对输出的顺序做任何假设。 (3认同)

小智 10

/sbin/ifconfig|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'
Run Code Online (Sandbox Code Playgroud)

如果您需要内部地址,请在 ifconfig 后附加您的接口,例如

 /sbin/ifconfig eth0|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'
Run Code Online (Sandbox Code Playgroud)


Jak*_*son 6

如果您在 NAT 后面,并且需要公共 IP,请使用以下命令:

wget -q -O - checkip.dyndns.org|sed -e 's/. 当前 IP 地址://' -e 's/<. $//'

取自:http : //www.go2linux.org/what-is-my-public-ip-address-with-linux


Lor*_*LLo 5

如果您有多个接口,则指定您想要哪个 IP 可能会很有用。如果你想要接口'eth0'的IPV4地址:

ip addr show dev eth0 | grep "inet " | awk '{ print $2 }' 
Run Code Online (Sandbox Code Playgroud)

如果你想要接口'eth0'的IPV6地址:

ip addr show dev eth0 | grep "inet6 " | awk '{ print $2 }' 
Run Code Online (Sandbox Code Playgroud)

如果要在笔记本电脑的两个常用接口 wlan0 和 eth0 之间搜索 IP:

CURRENT_IP=''
for INTERFACE in wlan0 eth0; do
    if [ -z $CURRENT_IP ]; then
        CURRENT_IP=$(ip addr show dev $INTERFACE | grep "inet " | awk '{ print $2 }')
    fi
done
Run Code Online (Sandbox Code Playgroud)