怎么用脚本获取网络配置文件

wen 实用脚本 1

本文目录导读:

怎么用脚本获取网络配置文件

  1. Linux 系统
  2. Windows 系统
  3. macOS 系统
  4. Python 跨平台脚本
  5. 图形界面版本(Windows PowerShell)
  6. 使用方法

Linux 系统

使用 Shell 脚本

#!/bin/bash
# 获取网络接口配置
echo "=== 网络接口信息 ==="
ip addr show
# 获取路由表
echo -e "\n=== 路由表 ==="
ip route show
# 获取DNS配置
echo -e "\n=== DNS 配置 ==="
cat /etc/resolv.conf
# 获取主机名
echo -e "\n=== 主机名 ==="
hostname
# 获取特定接口配置
echo -e "\n=== 特定接口状态 ==="
for interface in $(ls /sys/class/net/); do
    echo "接口: $interface"
    ethtool $interface 2>/dev/null | head -5
done

保存到文件的脚本

#!/bin/bash
OUTPUT_FILE="/tmp/network_config_$(date +%Y%m%d).txt"
{
    echo "=== 网络配置备份 ==="
    echo "时间: $(date)"
    echo ""
    echo "=== ifconfig 输出 ==="
    ifconfig -a
    echo ""
    echo "=== 网络配置文件 ==="
    for config_file in /etc/network/interfaces /etc/sysconfig/network-scripts/ifcfg-*; do
        if [ -f "$config_file" ]; then
            echo "文件: $config_file"
            cat "$config_file"
            echo "---"
        fi
    done
} > "$OUTPUT_FILE"
echo "配置已保存到: $OUTPUT_FILE"

Windows 系统

PowerShell 脚本

# 获取所有网络适配器信息
$adapters = Get-NetAdapter | Select-Object Name, Status, MacAddress, LinkSpeed
# 获取IP配置
$ipconfig = Get-NetIPConfiguration | Select-Object InterfaceAlias, 
    @{Name="IPAddress";Expression={$_.IPv4Address.IPAddress}},
    @{Name="SubnetMask";Expression={$_.IPv4Address.PrefixLength}},
    @{Name="DefaultGateway";Expression={$_.IPv4DefaultGateway.NextHop}}
# 获取DNS配置
$dns = Get-DnsClientServerAddress | Where-Object {$_.ServerAddresses -ne $null}
# 输出到文件
$output = @"
网络配置报告
时间: $(Get-Date)
网络适配器:
$($adapters | Format-Table | Out-String)
IP配置:
$($ipconfig | Format-Table | Out-String)
DNS服务器:
$($dns | Select-Object InterfaceAlias, ServerAddresses | Format-Table | Out-String)
"@
$output | Out-File -FilePath "C:\network_config_$(Get-Date -Format 'yyyyMMdd').txt"

CMD 批处理脚本

@echo off
set OUTPUT_FILE=C:\network_config_%date:~0,4%%date:~5,2%%date:~8,2%.txt
echo 网络配置备份 > %OUTPUT_FILE%
echo 时间: %date% %time% >> %OUTPUT_FILE%
echo. >> %OUTPUT_FILE%
echo ===== ipconfig /all ===== >> %OUTPUT_FILE%
ipconfig /all >> %OUTPUT_FILE%
echo. >> %OUTPUT_FILE%
echo ===== 网络连接状态 ===== >> %OUTPUT_FILE%
netstat -an >> %OUTPUT_FILE%
echo. >> %OUTPUT_FILE%
echo ===== 路由表 ===== >> %OUTPUT_FILE%
route print >> %OUTPUT_FILE%
echo 配置已保存到 %OUTPUT_FILE%

macOS 系统

Shell 脚本

#!/bin/bash
OUTPUT_FILE="/tmp/mac_network_config_$(date +%Y%m%d).txt"
{
    echo "=== macOS 网络配置 ==="
    echo "时间: $(date)"
    echo ""
    # 所有网络服务
    echo "=== 网络服务 ==="
    networksetup -listallnetworkservices
    echo ""
    echo "=== 所有接口配置 ==="
    ifconfig -a
    echo ""
    echo "=== DNS 配置 ==="
    scutil --dns
    echo ""
    echo "=== 路由表 ==="
    netstat -rn
} > "$OUTPUT_FILE"
echo "配置已保存到: $OUTPUT_FILE"

Python 跨平台脚本

#!/usr/bin/env python3
import subprocess
import platform
import datetime
import os
def get_network_config():
    """获取网络配置信息"""
    system = platform.system()
    output = []
    output.append(f"系统: {system}")
    output.append(f"时间: {datetime.datetime.now()}")
    output.append("=" * 50)
    if system == "Windows":
        # Windows系统
        commands = [
            ("IP配置", "ipconfig /all"),
            ("路由表", "route print"),
            ("ARP表", "arp -a")
        ]
    else:
        # Linux/macOS
        commands = [
            ("接口信息", "ip addr show" if system == "Linux" else "ifconfig -a"),
            ("路由表", "ip route show" if system == "Linux" else "netstat -rn"),
            ("DNS配置", "cat /etc/resolv.conf")
        ]
    for title, cmd in commands:
        try:
            result = subprocess.run(cmd.split(), capture_output=True, text=True)
            output.append(f"\n=== {title} ===")
            output.append(result.stdout)
        except Exception as e:
            output.append(f"获取{title}失败: {e}")
    return "\n".join(output)
# 保存到文件
config = get_network_config()
filename = f"network_config_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.txt"
with open(filename, 'w', encoding='utf-8') as f:
    f.write(config)
print(f"配置已保存到: {os.path.abspath(filename)}")
print(config)

图形界面版本(Windows PowerShell)

Add-Type -Assembly System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$form.Text = "网络配置查看器"
$form.Size = New-Object System.Drawing.Size(800,600)
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Multiline = $true
$textBox.ScrollBars = "Vertical"
$textBox.Dock = "Fill"
$textBox.Font = New-Object System.Drawing.Font("Consolas",10)
$button = New-Object System.Windows.Forms.Button
$button.Text = "刷新"
$button.Dock = "Bottom"
$button.Add_Click({
    $output = ipconfig /all | Out-String
    $textBox.Text = $output
})
$form.Controls.Add($textBox)
$form.Controls.Add($button)
$form.ShowDialog()

使用方法

  1. 保存脚本:将对应系统的脚本保存为文件(如 get_network.sh
  2. 添加执行权限(Linux/macOS):
    chmod +x get_network.sh
  3. 运行脚本
    • Linux/macOS: ./get_network.sh
    • Windows PowerShell: 右键运行或 .\get_network.ps1
    • Python: python get_network.py

这些脚本会获取并保存网络配置信息到文件,方便查看和分析。

抱歉,评论功能暂时关闭!