当前位置:首页 > Linux > 正文

linux 如何获取ip

Linux 中,可通过 ip addrifconfig 命令来获取

Linux系统中,获取IP地址是一项常见的操作,无论是用于网络配置、故障排查还是日常管理,以下是几种在Linux中获取IP地址的详细方法,涵盖命令行工具、图形界面以及脚本自动化等方式。


使用 ip 命令

ip 命令是现代Linux系统中推荐使用的网络管理工具,功能强大且灵活。

获取所有网络接口的IP地址

ip addr show

输出示例:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:68:22:1e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
       valid_lft 86399sec preferred_lft 86399sec
    inet6 fe80::20c:29ff:fe68:221e/64 scope link
       valid_lft forever preferred_lft forever

获取特定接口的IP地址

ip addr show eth0 | grep 'inet '

输出示例:

    inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0

提取IP地址(去掉子网掩码)

ip addr show eth0 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1

输出示例:

168.1.100

使用 ifconfig 命令

ifconfig 是传统的网络配置工具,虽然已被 ip 命令取代,但仍在许多系统中可用。

获取所有网络接口的IP地址

ifconfig

输出示例:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fe68:221e  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:68:22:1e  txqueuelen 1000  (Ethernet)
        RX packets 123456  bytes 12345678 (12.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 123456  bytes 12345678 (12.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

获取特定接口的IP地址

ifconfig eth0 | grep 'inet '

输出示例:

        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255

提取IP地址(去掉子网掩码)

ifconfig eth0 | grep 'inet ' | awk '{print $2}'

输出示例:

linux 如何获取ip  第1张

168.1.100

使用 hostname 命令

hostname 命令可以获取主机名和IP地址,但通常用于获取主机名对应的IP。

获取主机名和IP地址

hostname -I

输出示例:

168.1.100

使用 nmcli 命令

nmcli 是NetworkManager的命令行工具,适用于桌面环境或使用NetworkManager的系统。

获取所有连接的IP地址

nmcli connection show

输出示例:

NAME    UUID                                  TYPE      DEVICE
Wired  abcdefgh-ijkl-mnop-qrst-uvwxyz12345678 802.3     eth0

获取特定连接的IP地址

nmcli connection show Wired | grep IP4.ADDRESS

输出示例:

IP4.ADDRESS[1]: 192.168.1.100/24

提取IP地址(去掉子网掩码)

nmcli connection show Wired | grep IP4.ADDRESS | awk -F'[' '{print $2}' | awk -F']' '{print $1}'

输出示例:

168.1.100

使用 curlwget 获取公网IP

在某些情况下,可能需要获取Linux服务器的公网IP地址,可以通过外部服务实现。

使用 curl

curl ifconfig.me

输出示例:

456.789.123

使用 wget

wget -qOifconfig.me

输出示例:

456.789.123

通过脚本自动化获取IP地址

以下是一个示例脚本,可以自动获取指定接口的IP地址并输出。

#!/bin/bash
# 检查是否指定接口
if [ -z "$1" ]; then
    echo "Usage: $0 <interface>"
    exit 1
fi
# 获取IP地址
IP=$(ip addr show "$1" | grep 'inet ' | awk '{print $2}' | cut -d/ -f1)
# 检查是否获取到IP
if [ -z "$IP" ]; then
    echo "No IP address found for interface $1"
else
    echo "IP address for $1: $IP"
fi

使用方法:

./get_ip.sh eth0

输出示例:

IP address for eth0: 192.168.1.100

图形化界面获取IP地址

在桌面环境中,可以通过图形化工具查看IP地址。

GNOME桌面环境

  1. 打开“设置”。
  2. 选择“网络”。
  3. 在“有线”或“无线”连接中,查看“IP地址”。

KDE桌面环境

  1. 打开“系统设置”。
  2. 选择“网络配置”。
  3. 在“有线”或“无线”连接中,查看“IP地址”。

常见问题及解决方法

问题1:ip 命令显示“无法找到设备”错误。

原因:可能是网络接口名称不正确或未启用。
解决方法:使用 ip link show 查看所有网络接口名称,确保接口已启用。

问题2:ifconfig 命令未找到。

原因:某些Linux发行版默认未安装 ifconfig
解决方法:安装 net-tools 包:

sudo apt install net-tools   # Debian/Ubuntu
sudo yum install net-tools   # CentOS/RHEL

FAQs

Q1:如何获取Linux服务器的公网IP地址?

A:可以使用 curl ifconfig.mewget -qOifconfig.me,这些命令会返回服务器的公网IP地址。

Q2:如何通过脚本自动获取IP地址并保存到文件?

A:可以编写一个简单的脚本,

#!/bin/bash
IP=$(hostname -I)
echo "$IP" > /tmp/ip_address.txt

运行后,IP地址将保存到 `/tmp/ip_address.

0