news 2026/9/5 11:55:16

开机自动配置网络IP,这个脚本太实用了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
开机自动配置网络IP,这个脚本太实用了

开机自动配置网络IP,这个脚本太实用了

1. 为什么你需要开机自动配置IP?

你有没有遇到过这样的情况:每次重启Linux设备后,都要手动设置Wi-Fi连接、配置静态IP地址,甚至还要重新启动某些服务?对于嵌入式设备、工控机或者远程服务器来说,这不仅麻烦,还可能因为无法及时联网导致业务中断。

这时候,一个开机自动执行的脚本就显得尤为重要。它能帮你完成一系列初始化操作,比如:

  • 自动开启无线网卡
  • 连接指定Wi-Fi
  • 配置静态IP地址
  • 启动关键服务(如SSH、Web服务等)

本文将带你一步步实现一个实用的开机自启脚本,重点解决“开机自动配置网络IP”这一高频需求。整个过程简单、稳定、适用于Ubuntu、Tina Linux等主流系统。


2. 开机自启的原理:rc.local 文件机制

2.1 系统启动时谁在干活?

Linux系统在完成内核加载和基础服务初始化之后,会执行一个传统但非常可靠的脚本文件:/etc/rc.local

这个文件的特点是:

  • 在系统所有服务启动完成后才被执行
  • 以 root 权限运行
  • 支持执行任意命令或调用外部脚本
  • 兼容性好,尤其适合老旧系统或嵌入式环境

小知识补充:虽然现代 systemd 系统已经逐渐取代 init 系统,但在大多数发行版中,rc.local仍然被保留并默认启用(需手动激活),是实现开机自启最简单的方式之一。


2.2 rc.local 的标准格式

一个合法的rc.local文件必须遵循以下结构:

#!/bin/bash [your command1] [your command2] ... exit 0

注意要点

  • 所有你要执行的命令写在exit 0之前
  • 必须以exit 0结尾,表示脚本成功退出
  • 第一行#!/bin/bash是可选的,但建议加上,确保使用 bash 解释器执行

3. 实战:编写自动配置IP的开机脚本

我们以 Ubuntu 16.04 和 Tina Linux 为例,演示如何通过rc.local实现开机自动配置无线网络和静态IP。

3.1 场景设定

假设你的设备有一块无线网卡wlan0,希望在开机时:

  1. 启用无线网卡
  2. 连接到名为yttc的Wi-Fi热点
  3. 设置静态IP为192.168.1.100
  4. 子网掩码为255.255.255.0
  5. 网关为192.168.1.1

3.2 编辑 rc.local 文件

打开终端,输入以下命令编辑文件:

sudo nano /etc/rc.local

修改内容如下:

#!/bin/bash # 启用 wlan0 网卡 ifconfig wlan0 up # 使用 iwconfig 连接 Wi-Fi(开放型热点) iwconfig wlan0 essid yttc # 可选:如果需要密码认证,可以使用 wpa_supplicant(见进阶部分) # 这里假设 yttc 是无密码热点 # 配置静态IP ifconfig wlan0 192.168.1.100 netmask 255.255.255.0 # 添加默认网关 route add default gw 192.168.1.1 dev wlan0 # 可选:测试网络连通性(后台静默ping) ping -c 3 192.168.1.1 > /dev/null 2>&1 || echo "Network unreachable" >> /var/log/boot-network.log exit 0

保存并退出(nano 中按Ctrl+O, 回车,Ctrl+X)。


3.3 赋予执行权限

确保rc.local具备可执行权限:

sudo chmod +x /etc/rc.local

否则系统可能不会执行其中的命令。


3.4 (可选)systemd 环境下启用 rc.local

在较新的 Ubuntu 系统中,rc.local默认可能未启用。你需要手动创建 systemd 服务来支持它。

创建服务单元文件:
sudo nano /etc/systemd/system/rc-local.service

写入以下内容:

[Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target
启用服务:
sudo systemctl enable rc-local.service sudo systemctl start rc-local.service

现在,rc.local就会在每次开机时自动运行了。


4. 验证与调试技巧

4.1 如何确认脚本是否生效?

最直接的方法是重启系统

sudo reboot

重启后检查:

  • 是否成功连接Wi-Fi
  • IP地址是否正确

查看当前IP:

ifconfig wlan0

你应该看到类似输出:

wlan0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0

4.2 常见问题排查

问题现象可能原因解决方法
wlan0不存在或无法启用驱动未加载检查lsmoddmesg | grep wlan
无法连接Wi-FiESSID错误或加密方式不匹配使用wpa_supplicant处理加密网络
IP设置无效命令顺序不对或被后续服务覆盖将命令延后执行,或关闭NetworkManager自动管理
脚本未执行rc.local无执行权限或服务未启用检查权限和systemctl status rc-local

4.3 加入日志记录,方便排错

为了便于调试,可以在脚本中加入日志输出:

echo "$(date): Starting network setup for wlan0" >> /var/log/rc-local.log ifconfig wlan0 up && echo "wlan0 up OK" >> /var/log/rc-local.log iwconfig wlan0 essid yttc >> /var/log/rc-local.log 2>&1 ifconfig wlan0 192.168.1.100 netmask 255.255.255.0 && echo "IP set OK" >> /var/log/rc-local.log

这样出问题时可以直接查看/var/log/rc-local.log定位故障点。


5. 进阶技巧:支持带密码的Wi-Fi连接

上面的例子适用于无密码的开放热点。如果你要连接的是 WPA/WPA2 加密的Wi-Fi(比如家庭路由器),就需要使用wpa_supplicant

5.1 生成 wpa_supplicant 配置

先生成配置文件:

sudo wpa_passphrase yttc your_password > /etc/wpa_supplicant.conf

该命令会输出加密后的PSK密钥,并保存到指定文件。

5.2 修改 rc.local 脚本

替换原来的iwconfig行:

# 停止可能存在的旧进程 killall wpa_supplicant > /dev/null 2>&1 || true # 启动 wpa_supplicant wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf # 获取IP(如果是DHCP) # dhclient wlan0 # 如果是静态IP,则继续使用 ifconfig ifconfig wlan0 192.168.1.100 netmask 255.255.255.0 route add default gw 192.168.1.1 dev wlan0

注意:-B表示后台运行,-i指定接口,-c指定配置文件。


6. 更优雅的选择:封装为独立脚本

随着功能增多,把所有命令都塞进rc.local会让文件变得臃肿。更好的做法是:在 rc.local 中只调用一个外部脚本

6.1 创建专用脚本

sudo nano /usr/local/bin/setup-network.sh

内容如下:

#!/bin/bash LOGFILE=/var/log/network-setup.log echo "$(date): Starting network setup..." >> $LOGFILE ifconfig wlan0 up >> $LOGFILE 2>&1 sleep 2 wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf >> $LOGFILE 2>&1 sleep 3 ifconfig wlan0 192.168.1.100 netmask 255.255.255.0 >> $LOGFILE 2>&1 route add default gw 192.168.1.1 dev wlan0 >> $LOGFILE 2>&1 echo "$(date): Network setup completed." >> $LOGFILE

赋予执行权限:

sudo chmod +x /usr/local/bin/setup-network.sh

6.2 修改 rc.local

只需一行即可:

#!/bin/bash # 调用外部网络配置脚本 /usr/local/bin/setup-network.sh exit 0

这种方式更清晰、易维护,也方便复用。


7. 总结

7.1 核心要点回顾

  • /etc/rc.local是实现开机自启的经典方案,兼容性强,适合嵌入式和老旧系统
  • 脚本必须包含exit 0,否则可能导致系统卡住
  • 所有命令应在exit 0之前,且注意执行顺序
  • 对于加密Wi-Fi,应使用wpa_supplicant而非iwconfig
  • 推荐将复杂逻辑封装为独立脚本,由rc.local调用,保持整洁

7.2 适用场景扩展

除了自动配置IP,你还可以用这个机制做更多事:

  • 自动挂载U盘或NAS共享目录
  • 启动Python/Node.js后台服务
  • 定时同步时间(ntpdate)
  • 发送开机通知邮件或微信消息
  • 检测硬件状态并记录日志

只要你想让系统“一开机就自动做的事”,都可以放进这里。


7.3 最后提醒

尽管rc.local很方便,但在生产环境中仍需谨慎:

  • 不要在其中运行阻塞性长时间任务
  • 避免依赖尚未初始化的服务(如数据库、网络存储)
  • 建议添加超时控制和错误处理机制

掌握这项技能后,你的Linux设备将真正实现“插电即用”,再也不用手动配置网络!


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 6:52:35

猫抓浏览器扩展:轻松捕获网页视频资源的实用指南

猫抓浏览器扩展:轻松捕获网页视频资源的实用指南 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否经常遇到这样的困扰:看到精彩的在线视频却无法下载保存?想要…

作者头像 李华
网站建设 2026/9/3 2:40:30

万物识别-中文-通用领域模型压缩:ONNX转换与量化实战

万物识别-中文-通用领域模型压缩:ONNX转换与量化实战 你有没有遇到过这样的问题:训练好的图像识别模型太大,部署起来卡顿、加载慢,甚至在边缘设备上根本跑不动?今天我们要解决的就是这个痛点——把阿里开源的“万物识…

作者头像 李华
网站建设 2026/9/3 4:46:19

拯救者系列BIOS隐藏功能完全解锁指南:释放硬件全部潜能

拯救者系列BIOS隐藏功能完全解锁指南:释放硬件全部潜能 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具,例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh_mirrors/…

作者头像 李华
网站建设 2026/9/3 6:52:41

联想拯救者BIOS解锁终极指南:3步开启隐藏高级功能

联想拯救者BIOS解锁终极指南:3步开启隐藏高级功能 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具,例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh_mirrors/le/LE…

作者头像 李华
网站建设 2026/9/3 6:52:40

Qwen3-0.6B GPU资源浪费?动态批处理优化部署案例分享

Qwen3-0.6B GPU资源浪费?动态批处理优化部署案例分享 在实际部署轻量级大模型如Qwen3-0.6B时,一个常见但容易被忽视的问题是GPU利用率低、资源空转严重。尤其在并发请求较少或输入长度波动较大的场景下,静态批处理策略往往导致显存闲置、推理…

作者头像 李华
网站建设 2026/9/4 21:43:25

OpCore Simplify:从硬件检测到EFI生成的全链路智能配置方案

OpCore Simplify:从硬件检测到EFI生成的全链路智能配置方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 想要在PC上流畅运行macOS却苦于…

作者头像 李华