linux 如何获取ip
- Linux
- 2025-08-08
- 4
Linux 中,可通过
ip addr
或
ifconfig
命令来获取
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}'
输出示例:
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
使用 curl
或 wget
获取公网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桌面环境
- 打开“设置”。
- 选择“网络”。
- 在“有线”或“无线”连接中,查看“IP地址”。
KDE桌面环境
- 打开“系统设置”。
- 选择“网络配置”。
- 在“有线”或“无线”连接中,查看“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.me
或 wget -qOifconfig.me
,这些命令会返回服务器的公网IP地址。
Q2:如何通过脚本自动获取IP地址并保存到文件?
A:可以编写一个简单的脚本,
#!/bin/bash IP=$(hostname -I) echo "$IP" > /tmp/ip_address.txt
运行后,IP地址将保存到 `/tmp/ip_address.