Определите подключенный USB-драйвер и запустите на нем определенный файл
У меня есть своего рода киоск Ubuntu, созданный на основе Ubuntu Server 14.0.2, который запускает приложение на Chrome. В киоске нет подключения к Интернету, поэтому обновления приложения следует выполнять вручную. Я хочу, чтобы процесс обновления был максимально простым, поэтому я хочу представить конечному пользователю возможность просто подключить к компьютеру USB-накопитель, и USB-накопитель будет автоматически обнаружен и попытается запустить определенный файл., Например, я подключаю USB-накопитель, и Ubuntu Server пытается найти update-2.3.sh
файл и выполнить его. Тот update-2.3.sh
file - это просто файл, который будет запускать некоторые команды и обмениваться файлами с USB на жесткий диск, что приведет к появлению нового кода. Я думаю, что это должно быть запущено с правами администратора или, может быть, просто установив каталог кода в 777
должно быть достаточно?
Пример файлов на USB-накопителе:
├───update-2.3.sh
├───/updates
| └───file1.php
| └───file2.php
└───/sub
└───another.php
Теперь, когда update-2.3.sh
файл будет запускать определенные команды, такие как mv
переопределить существующие файлы (есть папка `~/code/app/updates) и некоторые команды от имени администратора:
sudo stop kiosk
(sudo?) mv updates ~/code/app/
sudo start kiosk
* не проверял это mv
команда, я надеюсь, что это работает
Возможно ли сделать такую вещь?
1 ответ
@drifter104 правильно, вы можете достичь этого с помощью правил udev. У меня была похожая установка, где я хотел подключить зашифрованный флэш-накопитель и автоматически запускать сценарий резервного копирования для резервного копирования определенных важных файлов с моего рабочего компьютера.
Я приведу пример того, что я сделал, чтобы заставить мою работать.
Согласно README от udev, /etc/udev/rules.d/README:
Если порядок файлов в этом каталоге не важен для вас, рекомендуется просто назвать ваши файлы "descriptive-name.rules", чтобы они обрабатывались ПОСЛЕ всех пронумерованных правил в этом каталоге и / lib / udev / rules. d и, таким образом, переопределить все, что там установлено.
Поэтому я назвал свой файл правил:
/etc/udev/rules.d/encrypted-backup.rules
В других руководствах будут заданы правила для определения номера модели флэш-накопителя и / или его серийного номера, однако я не могу это использовать. Я не хотел, чтобы мои сценарии резервного копирования запускались, пока зашифрованный том не был смонтирован и расшифрован. Поэтому я делаю это из /sys/block/dm-3 (зашифрованный том), в отличие от самого аппаратного устройства (/sys/block/sdb). После того, как я ввел свой пароль для расшифровки диска, ТОГДА сценарий back сделал свое дело. Я полагаю, вы захотите запустить с самого аппаратного устройства.
Итак, создайте правило udev, которое запускает успешную расшифровку и добавление 'dm-3'. В этом файле правил я сделаю следующие строки:
KERNEL=="dm-3", ACTION=="add", SUBSYSTEM=="block", RUN+="/usr/local/bin/backup.sh"
Специальное примечание: если вы не добавите ACTION=="add", он запустит ваш скрипт при монтировании и размонтировании диска.:)
Теперь для вашего обновления вы можете просто запустить скрипт обновления.
Я надеюсь, что информация поможет вам!