Я относительно новичок в Linux, сделав переход от Windows к безголовому медиацентру. Я запускаю KODIBuntu.
Я пытаюсь создать автоматизированную систему копирования для резервного копирования моей коллекции носителей. Мне понравилась концепция с linux, которая "если вы можете мечтать о том, что вы можете это сделать".
То, что я хочу достичь, - это то, что диск вставляется в дисковод, а script разрывает содержимое на моем диске.
например, диск вставлен → тип носителя определен → правильное копирование script run
Я использовал множество полезных веб-страниц с помощью поисковых запросов Google для создания скриптов, которые будут выполнять сама работа по копированию. Я проделал кучу чтения и указал на использование "HAL"... Затем я обнаружил, что его функция устарела и заменена udev. Я сделал кучу больше чтения и узнал, как использовать UDEV и создал следующее правило, которое я доказал, связывая напрямую с копированием script
ACTION=="change", SUBSYSTEMS=="scsi", KERNEL=="s[rg][0-9]*", ATTRS{vendor}=="TSSTcorp", MODE="0660", GROUP="optical", RUN+="/home/jlivin25/myscripts/DiscTypeTest.sh"
Я понял, что мне нужен промежуточный script, который будет выполнять "работу", чтобы определить, какой тип оптического носителя. Дальнейшее чтение заставило меня поверить, что мне нужно будет использовать какое-то выражение "IF".
вставлен диск IF тогда IF audio cd run rip script 1 IF DVD run rip script 2 IF blu-ray run rip script 3 ELSE no cd вставлен
Я сделал еще несколько поисковых запросов и нашел код в разных местах, в котором используются переменные среды. Однако из дополнительной информации о google кажется, что эти переменные не определены до тех пор, пока не будет указан UDEV?
Мой обычный подход состоит в том, чтобы построить строку кода, запустить в терминале, и если я получу то, что хочу, я поместил все строки в оболочку script?
Код, над которым я работаю в данный момент, приведен ниже. Я, хотя это логически, если бы я мог получить script для вывода того, что, по его мнению, находится в диске для файла/журнала, что половина битвы будет выиграна, и я мог бы просто заменить это для script местоположений, которые будут делать соответствующие ripping task... любые идеи людей о том, почему это не работает, как я хочу?
Я использовал эти страницы для получения информации:
https://pathar.tl/blog/the-ultimate-...pping-machine/ https://askubuntu.com/info/35985...on-of-dvd-disc
вот мой код:
#!/bin/bash
#
set -eu
#
# code below is derived from work by JimVanns, thanks
# https://github.com/jvanns/htpc/blob/master/dsc-trg-q
#
#
###########################################################################
### DEFINE VARIABLES HERE ###
### $HOME DOES NOT NEED DEFINING AS IT SEEMS TO BE BUILT INTO BASH FROM ###
### WHAT POSTS I HAVE READ RELATING TO USING WHAT I THINK ARE UDEV ###
### ENVIRONMENTAL VARIABLES E.G. $ID_CDROM_MEDIA_CD DO NOT APPEAR TO ###
### NEED DEFINING THEMSELVES, ALSO PART OF BASH OR LINUX COMMAND ###
### STRUCTURE CALLED BY BASH? ###
###########################################################################
#
MEDIA=
#
##############################################################################
### LEFT IN SO AS TO ALTER AS LITTLE AS POSSIBLE, I HAVE READ THAT DELAYS ###
### OFTEN IRON OUT KINKS IN CODE, PLUS ALSO FOUND IT USEFULL TO ALLOW A ###
### SMALL DELAY FOR CD-DRIVE TO DO ITS THING AFTER PUTTING DISK IN ###
##############################################################################
#
sleep 2
#
mkdir -p $HOME/myscripts/scriptlogs
#
#
if [ "$ID_CDROM_MEDIA_BD" = "1" ]
then
MEDIA=bluray
(
echo "$MEDIA" >> $HOME/myscripts/scriptlogs/DiscTypeTest.log
) &
if [ "$ID_CDROM_MEDIA_DVD" = "1" ]
then
MEDIA=dvd
(
echo "$MEDIA" >> $HOME/myscripts/scriptlogs/DiscTypeTest.log
) &
elif [ "$ID_CDROM_MEDIA_CD" = "1" ]
then
MEDIA=cdrom
(
echo "$MEDIA" >> $HOME/myscripts/scriptlogs/DiscTypeTest.log
) &
fi