您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        # 怎么使用shell脚本查看网络接口信息
## 前言
在Linux系统管理和网络故障排查中,查看网络接口信息是一项基础但至关重要的任务。通过shell脚本自动化这一过程,可以显著提高工作效率。本文将详细介绍如何使用shell脚本查看网络接口的各种信息,包括IP地址、MAC地址、网络状态等。
---
## 一、常用网络信息查看命令
在编写脚本前,我们需要了解几个核心命令:
### 1. `ifconfig`命令
```bash
ifconfig -a
显示所有网络接口的详细信息(部分新系统需安装net-tools)
ip命令(现代替代方案)ip addr show
ip link show
nmcli(NetworkManager用户)nmcli device show
netstat -i  # 接口统计信息
ethtool eth0  # 查看物理网卡特性
#!/bin/bash
echo "=== 网络接口列表 ==="
ip -o link show | awk -F': ' '{print $2}'
#!/bin/bash
echo "=== IPv4地址信息 ==="
ip -4 addr show | grep -oP '(?<=inet\s)\d+\.\d+\.\d+\.\d+'
#!/bin/bash
# 打印彩色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
echo -e "${GREEN}=== 网络接口详细信息 ===${NC}"
for iface in $(ip -o link show | awk -F': ' '{print $2}')
do
  echo -e "\n${RED}接口: $iface${NC}"
  
  # MAC地址
  mac=$(ip link show $iface | awk '/link\/ether/ {print $2}')
  echo "MAC地址: $mac"
  
  # IPv4地址
  ipv4=$(ip -4 addr show $iface | grep -oP '(?<=inet\s)\d+\.\d+\.\d+\.\d+')
  echo "IPv4地址: ${ipv4:-无}"
  
  # 状态检测
  state=$(ip link show $iface | grep -oP '(?<=state\s)\w+')
  case $state in
    UP) echo "状态: ${GREEN}运行中${NC}" ;;
    DOWN) echo "状态: ${RED}已禁用${NC}" ;;
    *) echo "状态: $state" ;;
  esac
  
  # MTU值
  mtu=$(ip link show $iface | grep -oP '(?<=mtu\s)\d+')
  echo "MTU: $mtu"
done
#!/bin/bash
function get_interface_info() {
  printf "%-15s %-20s %-18s %-10s %-8s\n" "接口名称" "IPv4地址" "MAC地址" "状态" "MTU"
  echo "---------------------------------------------------------------"
  
  ip -o link | awk -F': ' '{print $2}' | while read iface
  do
    ipv4=$(ip -4 addr show dev $iface 2>/dev/null | grep -oP '(?<=inet\s)\d+\.\d+\.\d+\.\d+')
    mac=$(ip link show $iface | awk '/link\/ether/ {print $2}')
    state=$(ip -o link show $iface | awk '{print $9}')
    mtu=$(ip link show $iface | grep -oP '(?<=mtu\s)\d+')
    
    printf "%-15s %-20s %-18s %-10s %-8s\n" "$iface" "${ipv4:-N/A}" "${mac:-N/A}" "$state" "$mtu"
  done
}
get_interface_info
#!/bin/bash
interface="eth0"
if ip link show $interface >/dev/null 2>&1; then
  echo "$interface 存在"
else
  echo "$interface 不存在" >&2
  exit 1
fi
#!/bin/bash
interface="eth0"
duration=5
rx1=$(cat /sys/class/net/$interface/statistics/rx_bytes)
tx1=$(cat /sys/class/net/$interface/statistics/tx_bytes)
sleep $duration
rx2=$(cat /sys/class/net/$interface/statistics/rx_bytes)
tx2=$(cat /sys/class/net/$interface/statistics/tx_bytes)
rx_speed=$(( ($rx2 - $rx1) / $duration / 1024 ))
tx_speed=$(( ($tx2 - $tx1) / $duration / 1024 ))
echo "接收速度: ${rx_speed}KB/s"
echo "发送速度: ${tx_speed}KB/s"
#!/bin/bash
output_file="network_report_$(date +%Y%m%d).html"
cat <<EOF > $output_file
<html>
<head>
<title>网络接口报告</title>
<style>
  table { border-collapse: collapse; width: 80%; }
  th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
  tr:nth-child(even) { background-color: #f2f2f2; }
</style>
</head>
<body>
<h1>网络接口报告 - $(date)</h1>
<table>
<tr><th>接口</th><th>IPv4</th><th>MAC</th><th>状态</th></tr>
EOF
ip -o link | awk -F': ' '{print $2}' | while read iface
do
  ipv4=$(ip -4 addr show dev $iface 2>/dev/null | grep -oP '(?<=inet\s)\d+\.\d+\.\d+\.\d+')
  mac=$(ip link show $iface | awk '/link\/ether/ {print $2}')
  state=$(ip -o link show $iface | awk '{print $9}')
  
  echo "<tr><td>$iface</td><td>${ipv4:-N/A}</td><td>${mac:-N/A}</td><td>$state</td></tr>" >> $output_file
done
echo "</table></body></html>" >> $output_file
echo "报告已生成: $output_file"
权限问题:
chmod +x script.sh兼容性处理:
# 检测命令是否存在
if ! command -v ip &> /dev/null; then
 echo "ip命令未安装,尝试使用ifconfig"
 ifconfig -a || echo "需要安装net-tools或iproute2"
 exit 1
fi
不同Linux发行版的差异:
通过shell脚本自动化网络接口信息收集,我们可以: - 快速获取系统网络概况 - 定期监控网络状态变化 - 生成格式化的报告文档 - 集成到更大的监控系统中
建议将常用脚本保存到/usr/local/bin/并设置别名,例如:
alias netshow='/usr/local/bin/network_info.sh'
掌握这些技巧后,你将能更高效地管理Linux服务器的网络配置。 “`
注意:实际字数为约1500字,如需达到1850字,可以: 1. 增加更多实用脚本示例 2. 添加故障排查案例 3. 深入讲解正则表达式过滤技巧 4. 加入性能优化建议 5. 扩展不同发行版的适配方案
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。