Определите подключенный 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", он запустит ваш скрипт при монтировании и размонтировании диска.:)

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

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

Другие вопросы по тегам