Bash Shell命令来查找或获取IP地址

时间:2020-01-09 10:37:25  来源:igfitidea点击:

如何从bash shell命令提示符中找到我的Linux/UNIX系统ip地址,子网和相关网络信息?
如何从命令行确定我的私有和公共IP地址?
要查找Linux/UNIX/* BSD/macOS和Unixish系统的IP地址,需要在Unix上使用名为ifconfig的命令,在Linux上使用ip命令或主机名命令。
这些命令用于配置内核驻留的网络接口并显示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地址。
当然,根据您的Unix系统版本和网卡驱动程序,NIC(网络接口卡)名称将有所不同。
这是我基于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 -I

输出示例:

192.168.2.25

Linux ip命令

建议您在基于Linux的系统上使用ip命令。

ip命令显示有关ip地址的信息,操纵路由,网络设备,接口,隧道等。
以下ip命令将显示分配给系统的所有ip地址:

# ip addr show

要查看有关名为eth0 ip地址的NIC的信息,请输入:

# 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

Bash命令显示Linux和Unix系统的公共IP地址

我们可以使用如下所示的host命令或dig命令来显示Linux或Unix系统的公共IP地址:

host myip.opendns.com resolver1.opendns.com

或者

dig +short myip.opendns.com @resolver1.opendns.com

如何在Linux上的命令行中找到我的公共IP地址