Обнаружьте включенный драйвер USB и петляйте на нем

У меня есть некоторый киоск Ubuntu, настроенная на основе Сервера Ubuntu 14.0.2, который запускает приложение на хроме. Киоск не имеет никакого интернет-соединения таким образом, обновления приложения должны быть сделаны вручную. Я хочу, чтобы процесс обновления был максимально легок поэтому, что я хочу представить, конечному пользователю способность просто включиться к ПК, Карта памяти и Карта памяти будут автоматически обнаружены и попытаются петлять. Например, я включаю Карту памяти, и Сервер Ubuntu пытается найти a update-2.3.sh файл и выполняет его. Это update-2.3.sh файл является просто файлом, который выполнит некоторые команды и файлы подкачки с USB на Жесткий диск, приводящий к новому коду. Я предполагаю, что это должно быть, работал с правами администратора или возможно просто установкой каталога кода к 777 должен быть достаточно?

Пример файлов в Карте памяти:

├───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
задан 4 September 2015 в 11:04
1 ответ

@ 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 == "add", то скрипт будет запускать ваш скрипт при монтировании и размонтировании диска. :)

Теперь для обновления вы можете просто запустить сценарий обновления.

Надеюсь, эта информация вам поможет!

1
ответ дан 4 December 2019 в 00:01

Теги

Похожие вопросы