У меня есть набор жестких дисков, которые повернуты для резервного копирования вне офиса. При повторной установке одного из дисков необходимо выполнить несколько шагов, которые я использовал в простом сценарии bash. Я бы хотел, чтобы сценарий выполнялся автоматически при горячей замене одного из дисков.
В идеале у меня был бы список идентификаторов дисков (/dev/disk/by-id/...
) для дисков, которые должны запускать скрипт; когда один из них вставлен, сценарий будет запущен, и идентификатор конкретного диска будет передан в качестве параметра. В качестве альтернативы было бы достаточно иметь копию сценария для каждого диска и запускать каждый сценарий для соответствующего диска.
Я использую Ubuntu Server 14.04 LTS и просматриваю похожие вопросы, связанные с USB-накопителями, и смотрю на udev
и hotplug
как две системы, которые мне, вероятно, понадобятся, но я надеялся, что кто-то сможет указать мне конкретное краткое решение для моих нужд.
Мой обычный подход к написанию правил udev - найти что-то похожее на то, что мне нужно в /lib/udev
и дополните его поиском в Google или беглым просмотром страниц руководства.
В вашем случае большую часть моджо можно найти в /lib/udev/rules.d/60-persistent-storage.rules
. Я придумал это правило:
ACTION=="add", SUBSYSTEM=="block", ENV{ID_SERIAL}=="XXXXXXXX", PROGRAM="/opt/bin/myscript $env{ID_SERIAL}"
Вам понадобится одно правило для каждого диска, и ваш скрипт получит серийный номер диска в качестве параметра.
Я использую здесь только серийный номер диска, этого должно быть достаточно, но вы можете восстановить весь идентификатор, как показано на /dev/disk/by-id
с этой строкой:
$env{ID_BUS}-$env{ID_SERIAL}
Чтобы проверить серийный номер накопителя, вы можете использовать:
udevadm info -n /dev/disk/by-id/XXXXXXXX | grep -i SERIAL