我有一些基于Ubuntu服务器14.0.2的Ubuntu设置,它在Chrome上运行一个应用程序。 信息亭没有互联网连接,因此应用程序的更新应该手动完成。 我希望更新过程尽可能地简单,所以我想向最终用户展示的是能够简单地将PC连接到USB驱动器,USB驱动器将自动检测到并尝试运行某个文件。 例如,我插入一个USB驱动器,Ubuntu服务器试图find一个update-2.3.sh文件并执行它。 该update-2.3.sh文件只是一个文件,将运行一些命令和交换文件从USB到硬盘导致新的代码。 我猜这应该是用pipe理员权限运行,也许只是设置代码目录到777应该是足够的?
USB驱动器中的文件示例:
├───update-2.3.sh ├───/updates | └───file1.php | └───file2.php └───/sub └───another.php
现在update-2.3.sh文件会运行某些命令,例如mv来覆盖现有的文件(有一个文件夹“〜/ code / app / updates)”和一些命令为admin:
sudo stop kiosk (sudo?) mv updates ~/code/app/ sudo start kiosk
*没有testing过这个mv命令,我希望它能正常工作
这样做可能吗?
@ drifter104是正确的,你可以用udev规则来实现这个。 我有一个类似的设置,我想插入一个encryption的拇指驱动器,并自动运行一个备份脚本来从我的工作计算机备份某些重要的文件。
我会给你举例说明我的工作。
根据udev自述文件,/etc/udev/rules.d/README:
如果这个目录中的文件的顺序对您不重要,build议您简单地将文件命名为“descriptive-name.rules”,以便在该目录和/ lib / udev / rules中的所有编号规则之后处理这些文件。 d,从而覆盖那里设置的任何东西。
所以,我打电话给我的规则文件:
/etc/udev/rules.d/encrypted-backup.rules
其他的指南将有设置抓住拇指驱动器的型号和/或它的序列号,但我不能使用它。 我不想让我的备份脚本运行,直到encryption的卷被装载和解密。 因此,我正在从/ sys / block / dm-3(encryption卷),而不是硬件设备本身(/ sys / block / sdb)。 一旦我input了我的密码来解密驱动器,那就让后面的脚本去做。 我想你会想从硬件设备本身触发。
所以,创build一个触发'DM3'的udev规则,成功解密并添加。 在上述的规则文件中,我将这些行:
KERNEL=="dm-3", ACTION=="add", SUBSYSTEM=="block", RUN+="/usr/local/bin/backup.sh"
特别注意:如果您不添加ACTION ==“添加”,那么它将在安装和卸载驱动器时运行脚本。 🙂
现在,为了您的更新,您可以简单地运行您的更新脚本。
我希望信息能帮助你!