其他
极路由4刷机
米沃奇 波箱保养
玩客云
玩客云刷第三方系统
玩客云-Home Assistant
服务器采购
RTL9210/RTL9210B
随身WiFi
固件备份与恢复
Debian
Debian-文件共享
Debian-物联网
Debian-授权
Debain-ZeroTier
Debian-自启动脚本
Debian-拓展内存
Debian-清理空间
Debian-USB控制
Debian-adb进9008
Debian-常见问题
Debian-快速使用
随身WiFi使用
切卡
快速找摄像头IP
edu教育邮箱申请
域名邮箱(转发)-Cloudflare
Web监控工具
WxPusher(微信消息推送)
WxPusher-API推送
WxPusher-Python推送
WxPusher-Shell推送
WxPusher-挪车通知
企业微信-应用
Godlike-免费游戏服务器
GitHub 国内访问(host)
常用螺丝替代型号
GitHub Actions
workflows-同步上游仓库(覆盖)
workflows-⭐同步上游仓库
workflows-构建 Docker镜像
FAT32不可读
Kindle
Kindle-救砖
Kindle-越狱
中国移动-RAX3000Q(Y)
OpenWrt
网络奇葩问题
小米手环_BandTOTP
本文档使用 MrDoc 发布
-
+
首页
Debian-自启动脚本
# ⭐WiFi网络变更自动执行 Debian 12 正常使用 NetworkManager 网络管理套件,提供 NetworkManager-dispatcher 服务,可以用来添加一些`钩子`脚本,在网络发生特定变化的时候进行一些自定义操作 ```bash nano /etc/NetworkManager/dispatcher.d/USBctl.sh # 创建脚本 chmod +x /etc/NetworkManager/dispatcher.d/USBctl.sh # 给脚本添加可执行权限 nano /etc/NetworkManager/NetworkManager.conf # NetworkManager 中启用脚本 # 在 [main] 下添加 dispatcher=dispatcher.d # 指定脚本目录 systemctl daemon-reload # 修改后需要重新加载systemd的配置 systemctl restart NetworkManager # 重启 NetworkManager 服务 # 查看执行状态(二选一) systemctl status NetworkManager-dispatcher.service # 查看服务状态 journalctl -r -u NetworkManager-dispatcher # 查看执行详情 ``` `/etc/NetworkManager/dispatcher.d/USBctl.sh` ```bash #!/bin/sh echo "网络更改:" $1 $2 if [ "$1" = "wlan0" ]; then case "$2" in up) echo "WiFi 连接..." # 等待网络服务完全启动(修复开机没有连接就执行的问题) sleep 180 # 等待180s(带不带s都可以),测试的时候建议时间设置长点 # 下列方式二选一 wifi_state=$(nmcli -f active,ssid dev wifi | grep '^是') # 通过 nmcli 方式判断wifi是否连接 # wifi_state=$(ifconfig wlan0 | grep 'inet ') # 通过 ifconfig 方式判断wifi是否连接 # 检查网络是否真正连接(未连接则跳出,连接则继续) if [ -n "$wifi_state" ]; then # 检查变量是否为空(连接成功会有输出) echo "Wi-Fi 并未真正连接" exit 0 # 退出脚本,等待真正连接后再执行 fi echo "切换为主设备模式" echo none > /sys/class/leds/green:internet/trigger # 绿灯灭 echo host > /sys/kernel/debug/usb/ci_hdrc.0/role # 切换为主设备模式(接外设) sleep 3s # 休眠3s(带不带s都可以) mount /dev/sda1 /mnt/data # 挂在U盘到服务器(这个写你自己的路径) #mount UUID=<你的UUID> /mnt/data/ # 也可使用UUID挂载(blkid 查看 UUID) ;; down) echo "WiFi 断开..." echo "切换为从设备模式" echo default-on > /sys/class/leds/green:internet/trigger # 绿灯亮 echo gadget > /sys/kernel/debug/usb/ci_hdrc.0/role # 关闭主设备模式(作为外设) ;; esac fi ``` - $1: 发生变化的设备名称,一般的命名为ethX或者enpXsY - $2: 状态 `/etc/NetworkManager/NetworkManager.conf` ```bash [main] # 主要配置 plugins=ifupdown,keyfile # ifupdown允许脚本来配置网络接口,keyfile允许读取存储在文件中的密钥 dispatcher=dispatcher.d # 指定事件分发器目录(脚本存在该目录下) [ifupdown] # ifupdown 插件配置 managed=false # 是否自动配置网络接口 ``` # 开机自启脚本 更新到 Debian 12 后无效了? `/etc/rc.local` ```bash #!/bin/sh -e # 下面这条是要开机启动的命令 nmcli connection up USB sleep 5 nmcli connection down USB # 切换主设备模式 echo default-on > /sys/class/leds/green:internet/trigger # 绿灯亮 echo host > /sys/kernel/debug/usb/ci_hdrc.0/role # 切换为主设备模式 sleep 3s # 休眠3s mount /dev/sda1 /mnt/data # 挂在U盘到服务器(这个写你自己的路径) exit 0 ``` 大佬提供的还有通过 `/usr/sbin/mobian-usb-gadget` 设置(开机自启) ```bash echo host > /sys/kernel/debug/usb/ci_hdrc.0/role # 启用这条命令(USB拓展) ``` # 通过服务自启动 实测还是不稳定 ```bash nano /etc/systemd/system/zwzw.service # 创建服务单元文件 nano /etc/zwzw.local # 创建启动脚本 chmod +x /etc/zwzw.local # 添加执行脚本的执行权限 systemctl daemon-reload # 重新加载systemd的配置,以便识别新的服务单元 systemctl enable zwzw.service # 启用服务 systemctl start zwzw.service # 启动服务 systemctl status zwzw.service # 查看服务状态 journalctl -u zwzw.service # 查看服务日志 ``` `/etc/zwzw.local` ```bash #!/bin/sh -e # 关闭LED灯 echo none > /sys/class/leds/blue:wifi/trigger echo none > /sys/class/leds/red:os/trigger # 开启USB拓展 echo host > /sys/kernel/debug/usb/ci_hdrc.0/role exit 0 ``` `etc/systemd/system/zwzw.service` ```bash [Unit] # 服务描述 Description=开启USB拓展 # 服务依赖 After=local-fs.target [Service] # 服务的类型:forking(分叉), oneshot(单次触发), simple(简单), dbus(总线), notify(通知), idle Type=oneshot # 服务的执行命令 ExecStart=/etc/zwzw.local start # 服务的停止命令(不需要可以不使用) # ExecStop=/etc/zwzw.local stop # 服务在主进程退出后仍然保持活动状态,脚本执行完毕,服务也不会自动标记为已停止 RemainAfterExit=yes [Install] # 指定了服务应该被哪些目标所需要 WantedBy=multi-user.target ```
造物者W
2024年8月11日 22:07
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码