服务器测评网
我们一直在努力

linux 显示 ip

在Linux系统中,查看IP地址是日常运维和管理的基础操作,无论是网络故障排查、服务配置还是安全监控,都离不开对IP信息的准确获取,Linux提供了多种命令和工具来显示IP地址,从基础的传统命令到现代的iproute2工具套件,结合不同的选项和环境变量,可以灵活满足各种场景需求,本文将详细介绍Linux中显示IP地址的常用方法、进阶技巧及注意事项,帮助用户全面掌握IP查看技能。

linux 显示 ip

基础命令:ifconfig 与 ip addr

传统Linux网络管理中,ifconfig是最早用于显示和配置网络接口的命令,属于net-tools工具包,尽管许多现代发行版已默认安装iproute2(提供ip命令),但部分系统仍保留ifconfig以兼容旧脚本。

使用ifconfig无需参数即可显示所有网络接口的详细信息,包括IPv4地址、子网掩码、广播地址及MAC地址。

ifconfig  

输出中,eth0ens33等代表有线网卡,wlan0代表无线网卡,inet字段后跟的IPv4地址(如168.1.100)和Mask字段(如255.255.0)是最核心的IP信息,若仅查看特定接口,可添加接口名,如ifconfig eth0

ifconfig已被官方逐步淘汰,推荐使用iproute2中的ip addr命令(简称ip a)。ip命令功能更强大,输出更结构化,且支持IPv6,基础用法如下:

ip addr show  

或简化为:

ip a  

输出中,inet对应IPv4地址,inet6对应IPv6地址,brd为广播地址,scope表示作用域(如global为全局地址,link为链路本地地址),通过ip addr show eth0可精准查看指定接口,而ip addr list效果与ip addr show一致。

进阶方法:结合工具与环境变量

在复杂场景中,单一命令可能无法满足需求,结合工具链或环境变量可高效筛选信息。

快速提取IPv4地址

若仅需获取所有接口的IPv4地址,可结合grepawk过滤输出:

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

解释:grep 'inet '筛选包含IPv4的行(避免IPv6干扰),awk '{print $2}'提取IP及掩码部分(如168.1.100/24),cut -d'/' -f1按分割并取前半部分(仅IP地址)。

linux 显示 ip

通过环境变量获取SSH连接IP

当通过SSH远程登录Linux服务器时,可通过环境变量快速获取客户端IP:

echo $SSH_CLIENT  

输出格式为“客户端IP SSH服务端口 客户端端口”,例如168.1.200 22 12345,其中第一部分即为客户端IP,若需显示当前SSH连接的远程服务器IP,则使用:

echo $SSH_CONNECTION  

输出包含客户端和服务器的IP及端口,例如168.1.200 12345 192.168.1.100 22

在线获取公网IP

若需查看服务器的公网IP(而非内网IP),可通过curl访问IP查询服务:

curl ifconfig.me  

或使用其他公共接口:

curl ipinfo.io/ip  
curl cip.cc  

这些命令会直接返回公网IP地址,适合在脚本中自动获取或验证NAT后的出口IP。

网络接口管理:查看与筛选特定IP

Linux服务器可能存在多个网络接口(如物理网卡、虚拟网卡、Docker容器接口等),精准筛选特定接口的IP信息是常见需求。

按接口类型筛选

通过ip addr show的接口名参数可查看特定接口,

  • 查看有线网卡:ip addr show eth0
  • 查看无线网卡:ip addr show wlan0
  • 查看虚拟接口:ip addr show docker0

若不确定接口名,可先用ip addr showls /sys/class/net/列出所有接口。

linux 显示 ip

区分IPv4与IPv6

默认情况下,ip addr show会同时显示IPv4和IPv6地址,若仅需IPv4,可添加-4参数:

ip -4 addr show  

仅需IPv6时则用-6

ip -6 addr show  

查看动态IP与DHCP信息

若接口通过DHCP自动获取IP(如家用路由器场景),可通过以下命令查看DHCP客户端状态:

  • Ubuntu/Debian系统:systemctl status dhcpcdcat /var/lib/dhcpcd/dhcpcd-eth0.lease
  • CentOS/RHEL系统:nmcli connection show eth0 | grep ipv4.method(确认是否为auto
    或使用dhclient命令(需安装dhcp-client包):dhclient -eth0

脚本化应用:自动化获取IP信息

在运维自动化中,常需通过脚本批量获取或监控IP地址,以下提供两个简单脚本示例:

Bash脚本:获取所有接口IP

#!/bin/bash  
echo "网络接口IP信息:"  
echo "--------------------------------"  
for interface in $(ip addr show | awk '/^[0-9]+:/ {print $2}' | cut -d':' -f1); do  
    ip=$(ip addr show "$interface" | grep 'inet ' | awk '{print $2}' | cut -d'/' -f1)  
    if [ -n "$ip" ]; then  
        echo "$interface: $ip"  
    fi  
done  

保存为get_ips.sh,执行chmod +x get_ips.sh && ./get_ips.sh,可输出所有带IPv4地址的接口及其IP。

Python脚本:监控公网IP变化

#!/usr/bin/env python3  
import requests  
import time  
def get_public_ip():  
    try:  
        response = requests.get('https://ifconfig.me', timeout=5)  
        return response.text.strip()  
    except requests.RequestException:  
        return "获取失败"  
if __name__ == "__main__":  
    last_ip = get_public_ip()  
    print(f"当前公网IP: {last_ip}")  
    while True:  
        time.sleep(300)  # 每5分钟检查一次  
        current_ip = get_public_ip()  
        if current_ip != last_ip:  
            print(f"公网IP变化: {last_ip} -> {current_ip}")  
            last_ip = current_ip  

需安装requests包(pip install requests),适合监控服务器公网IP是否变化(如动态IP场景)。

注意事项与常见问题

  1. 权限问题ifconfig和部分ip命令(如配置IP时)需要root权限,普通用户可通过sudo ifconfigsudo ip addr执行。
  2. 发行版差异:Ubuntu/Debian默认安装iproute2,但可能未安装net-tools(需sudo apt install net-tools);CentOS/RHEL默认安装net-tools,但推荐优先使用ip命令。
  3. 临时IP与持久化配置:通过ifconfigip addr add添加的IP为临时配置,重启后失效;持久化配置需修改网络配置文件(如Ubuntu的/etc/netplan/、CentOS的/etc/sysconfig/network-scripts/)。
  4. IPv6显示:若系统未启用IPv6,ip addr show中可能无inet6字段,可通过sysctl net.ipv6.conf.all.disable_ipv6=0临时启用(需root权限)。

通过以上方法,用户可根据需求灵活选择命令和工具,从基础IP查看到自动化监控,全面掌握Linux系统中IP地址的获取与管理技巧,无论是日常运维还是复杂网络环境,这些技能都能提升工作效率,确保网络配置的准确性和稳定性。

赞(0)
未经允许不得转载:好主机测评网 » linux 显示 ip