Назад | Перейти на главную страницу

Обнаружение подключенного 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 команда, я надеюсь, что это сработает

Возможно ли такое?

@ 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 == «добавить», он запустит ваш сценарий при подключении и отключении диска. :)

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

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