У меня есть какой-то киоск 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
команда, я надеюсь, что это сработает
Возможно ли такое?
@ drifter104 правильный, вы можете добиться этого с помощью правил udev. У меня была аналогичная установка, когда я хотел подключить зашифрованный флэш-накопитель, и он автоматически запускал сценарий резервного копирования для резервного копирования определенных важных файлов с моего рабочего компьютера.
Я приведу вам пример того, что я сделал, чтобы моя работа заработала.
Согласно udev README, /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). После того, как я ввел свой пароль для расшифровки диска, ЗАТЕМ позвольте обратному сценарию сделать это. Я предполагаю, что вы захотите запустить с самого аппаратного устройства.
Итак, создайте это правило udev, которое срабатывает при успешном расшифровке и добавлении dm-3. В вышеупомянутом файле правил я сделаю следующие строки:
KERNEL=="dm-3", ACTION=="add", SUBSYSTEM=="block", RUN+="/usr/local/bin/backup.sh"
Специальная записка: Если вы не добавите ACTION == «добавить», он запустит ваш сценарий при подключении и отключении диска. :)
Теперь для вашего обновления вы можете просто запустить ваш скрипт обновления.
Надеюсь, эта информация вам поможет!