CM4树莓派开机功能-1️⃣固定网卡

固定eth0网卡

python 复制代码
#!/usr/bin/env python3
# 固定 eth0 IP 的简单脚本(基于 NetworkManager/nmcli)

import subprocess
import sys

# ===== 在这里改 IP / 网关 / DNS =====
STATIC_IP = "192.168.137.64/24"         # 要固定的 IP 和掩码
GATEWAY   = "192.168.137.1"             # 常见网关,可按实际改
DNS       = "114.114.114.114,8.8.8.8"   # DNS,可以填多个,用逗号分隔
IFACE     = "eth0"                      # 网卡名,默认 eth0
# ===================================

def run(cmd):
    print("执行:", " ".join(cmd))
    subprocess.check_call(cmd)

def get_conn_name(iface):
    # 通过 nmcli 找到跟 eth0 对应的连接名
    out = subprocess.check_output(
        ["nmcli", "-t", "-f", "NAME,DEVICE", "connection", "show"],
        text=True
    )
    for line in out.strip().splitlines():
        name, dev = line.split(":", 1)
        if dev == iface:
            return name
    return None

def main():
    # 先检查是否有 nmcli
    try:
        subprocess.check_call(
            ["nmcli", "--version"],
            stdout=subprocess.DEVNULL,
            stderr=subprocess.DEVNULL,
        )
    except Exception:
        print("错误:系统中没有 NetworkManager/nmcli,不能用这个脚本。")
        print("如果是别的网络管理方式(如 netplan / dhcpcd),需要用对应方法配置。")
        sys.exit(1)

    conn_name = get_conn_name(IFACE)
    if not conn_name:
        print(f"错误:找不到与 {IFACE} 绑定的网络连接,请确认网线已插好、网卡名正确。")
        sys.exit(1)

    print(f"找到连接:{conn_name} (设备 {IFACE})")

    # 设置静态 IP
    run([
        "nmcli", "connection", "modify", conn_name,
        "ipv4.addresses", STATIC_IP,
        "ipv4.gateway",   GATEWAY,
        "ipv4.dns",       DNS,
        "ipv4.method",    "manual"
    ])

    # 重启连接生效
    run(["nmcli", "connection", "down", conn_name])
    run(["nmcli", "connection", "up",   conn_name])

    print("✅ 已为", IFACE, "设置静态 IP:", STATIC_IP, "网关:", GATEWAY)

if __name__ == "__main__":
    main()
相关推荐
云栖梦泽14 分钟前
易语言开发从入门到精通:补充篇·网络编程进阶+实用爬虫开发·API集成·代理IP配置·异步请求·防封禁优化
开发语言
java1234_小锋28 分钟前
Java高频面试题:SpringBoot为什么要禁止循环依赖?
java·开发语言·面试
铅笔侠_小龙虾34 分钟前
Flutter Demo
开发语言·javascript·flutter
2501_9445255443 分钟前
Flutter for OpenHarmony 个人理财管理App实战 - 账户详情页面
android·java·开发语言·前端·javascript·flutter
福大大架构师每日一题1 小时前
ComfyUI v0.11.1正式发布:新增开发者专属节点支持、API节点强化、Python 3.14兼容性更新等全方位优化!
开发语言·python
wangdaoyin20101 小时前
若依vue2前后端分离集成flowable
开发语言·前端·javascript
向阳开的夏天2 小时前
麒麟V10源码编译QT5.6.3 (x86 & arm64)
开发语言·qt
Evand J2 小时前
【MATLAB例程】TOA和TDOA混合定位,适用于二维平面的高精度定位。锚点数量、位置、测量噪声可自行调节
开发语言·matlab·定位·tdoa
念越2 小时前
数据结构:栈堆
java·开发语言·数据结构
淮北4943 小时前
pip虚拟环境包的问题
开发语言·python·pip