上次说了一个脚本小技巧(预留启动脚本),这次说的这个小技巧,是U盘自动运行脚本。
U盘自动运行脚本的用处
U盘自动运行脚本,也属于是系统预留的一个接口吧。当系统忘记密码、没有debug调试线、网络进不去等等时,U盘就发挥作用了!系统预留了这个自动运行脚本,那可以解决好多问题。在这里简单罗列几点:
- 修改系统密码
- 自动升级
- 自动导入/导出配置文件
- 导出日志
- 导出数据
- 等等……
U盘自动运行脚本配置方法
Linux系统下是使用udev或者轻量级的类udev工具来自动自动挂载设备,这里以udev为例,来说下怎么设置U盘自动运行脚本。
1. udev挂载脚本配置
一般U盘挂载规则文件在这个目录下面:
/etc/udev/rules.d
我这里的文件内容:
ACTION!="add",GOTO="fens" KERNEL=="sd[a-z][0-9]",RUN+="/usr/sbin/mount-usb.sh %k %n $sysfs{size}" LABEL="fens"
这个脚本“/usr/sbin/mount-usb.sh”即U盘挂载脚本,当udev检测到U盘挂载事件时,会调用这个脚本。
2. U盘挂载脚本
U盘自动运行脚本,就是在U盘挂载脚本里添加的。首先要把自动运行的脚本名字给固定下来,这里暂定为“start.sh”。挂载脚本在挂载过U盘之后,去检测U盘里是否有该脚本,如果有则运行。脚本内容如下:
#!/bin/sh RUN="/mnt/usb/start.sh" #挂载U盘 /bin/mount /dev/$1 /mnt/usb #检测是否有自动运行脚本,如果有则执行 if [ -f $RUN ] then /bin/sh $RUN & fi
内容也比较简单,和上次那个脚本启动方式一样,有两点,一是使用/bin/sh启动,这样不用检测脚本是否具有可执行权限;二是加上&符号,后台运行脚本。
扩展
这样预留了一个自动运行脚本之后,相当于给系统又增加了一个预留接口一样,当客户需要导出日志或者数据时,而我们系统功能当前没有这个功能时,那就可以先写个脚本,实现客户功能。
如果你的设备有UI界面,可以再UI程序上也做一个通信接口(可以通过UDP通信实现,做一个发送数据的命令),然后再脚本里去把进度等信息发给UI界面显示,这样就更好用了。