Bash Shell 命令来查找或获取 IP 地址
要查找 Linux/UNIX/*BSD/macOS 和 Unixish 系统的 IP 地址,您需要使用 Unix 上的 ifconfig 命令和Linux 上的ip 命令或 hostname 命令。这些命令用于配置内核驻留网络接口并显示 IP 地址,例如 10.8.0.1 或 192.168.2.254。它在启动时用于根据需要设置接口。此后,通常仅在调试或需要系统调整时才需要它。
Bash Shell 命令来查找或获取 IP 地址
如果 ifconfig 命令未指定任何参数,则它会显示当前活动接口的状态。它显示以太网 IP 地址、Mac 地址、子网掩码和其他信息。键入以下 /sbin/ipconfig 命令以显示 IP 地址和相关网络信息:
$ /sbin/ifconfig
或者键入以下命令:
$ /sbin/ifconfig | less
在 Solaris 和其他 Unixish 操作系统下,您可能需要键入带有 -a 选项的 ifconfig 命令,如下所示:
$ /sbin/ifconfig -a
示例输出:
eth0 Link encap:Ethernet HWaddr 00:0F:EA:91:04:07 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20f:eaff:fe91:407/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:31167 errors:0 dropped:0 overruns:0 frame:0 TX packets:26404 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:38338591 (36.5 MiB) TX bytes:3538152 (3.3 MiB) Interrupt:18 Base address:0xc000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:1994 errors:0 dropped:0 overruns:0 frame:0 TX packets:1994 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:188041 (183.6 KiB) TX bytes:188041 (183.6 KiB)
在上面的例子中,192.168.1.2 是 eth0 以太网接口的 IP 地址。当然,NIC(网络接口卡)名称会因您的 Unix 系统和网卡驱动程序的版本而异。以下是我的 macOS Unix 桌面的输出:
/sbin/ifconfig
/sbin/ifconfig en0
使用 ifconfig 显示 FreeBSD Unix 服务器的私有 IP 地址
只需运行:
ifconfig
ifconfig -a
ifconfig em0
在 Unix 上查找默认路由信息
我们需要输入以下命令:
# netstat -rn
FreeBSD Unix 默认路由
使用主机名查找 Linux 上本地计算机的 IP 地址
我们也可以使用 hostname 命令来确定 Linux 服务器的 IP 地址。打开终端应用程序并执行 hostname 命令,如下所示:
# hostname -I
示例输出:
192.168.2.25
Linux ip 命令
建议您在基于 Linux 的系统下使用 ip 命令。ip 命令显示有关 ip 地址、操作路由、网络设备、接口、隧道等的信息。以下ip 命令将显示分配给您的系统的所有 ip 地址:# ip addr show
要查看有关名为 eth0 的 NIC ip 地址的信息,请输入:
# ip addr show eth0
示例输出:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether b8:ac:6f:65:31:e5 brd ff:ff:ff:ff:ff:ff inet 192.168.2.100/24 brd 192.168.2.255 scope global eth0 inet6 fe80::baac:6fff:fe65:31e5/64 scope link valid_lft forever preferred_lft forever
输入以下命令从 bash shell 列出所有网络接口:
# ip link show
Linux 命令显示默认路由
语法如下:
ip route show
ip r s
route -n
default via 10.8.0.1 dev tun0 proto static metric 50 default via 192.168.2.254 dev enp0s31f6 proto static metric 100 10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2 metric 50 10.83.200.0/24 dev lxdbr0 proto kernel scope link src 10.83.200.1 139.xxx.yyy.zzz via 192.168.2.254 dev enp0s31f6 proto static metric 100 192.168.2.0/24 dev enp0s31f6 proto kernel scope link src 192.168.2.25 metric 100 192.168.2.254 dev enp0s31f6 proto static scope link metric 100
用于显示 Linux 和 Unix 系统的公共 IP 地址的 Bash 命令
我们可以使用host 命令或dig 命令如下来显示你的 Linux 或 Unix 系统的公共 IP 地址:
host myip.opendns.com resolver1.opendns.com
或者
dig +short myip.opendns.com @resolver1.opendns.com
如何在 Linux 上从命令行查找我的公共 IP 地址
结论
您学习了各种 bash 命令来查找私有和公共 IP 地址、网络掩码、默认路由和其他信息。有关更多信息,请参阅如何在 shell 脚本中读取 UNIX/Linux 系统 IP 地址。