Sono relativamente nuovo a Linux avendo effettuato il passaggio da Windows a un centro multimediale headless. Sto eseguendo KODIBuntu.Determinare il tipo di supporto ottico (CD audio, DVD, blu-ray) utilizzando UDEV e script
Sto cercando di ottenere un sistema di ripping automatico per il backup della mia raccolta di supporti cartacei. Ho adorato il concetto con Linux che "se puoi sognarlo puoi farlo accadere".
Quello che sto cercando di ottenere è che un disco sia inserito nel lettore e che uno script copra il contenuto sul mio disco.
es disco inserito -> tipo di supporto determinato -> corretta lo script di strappo eseguito
ho usato un sacco di pagine web utili attraverso ricerche su Google per creare script che farà il lavoro strappo stesso. Ho fatto un sacco di letture e sono stato indirizzato verso l'uso di 'HAL' .... Poi ho scoperto che la sua funzione era stata deprecata e sostituita da udev. Ho fatto un sacco di più la lettura e ha scoperto come utilizzare UDEV e ha creato la regola folowing che ho provato lavori collegandosi direttamente ad uno script che strappa
ACTION=="change", SUBSYSTEMS=="scsi", KERNEL=="s[rg][0-9]*", ATTRS{vendor}=="TSSTcorp", MODE="0660", GROUP="optical", RUN+="/home/jlivin25/myscripts/DiscTypeTest.sh"
mi sono reso conto che avevo bisogno di uno script intermedia che avrebbe fatto il ' lavoro 'per determinare quale sia il tipo di supporto ottico. Ulteriori letture mi hanno portato a credere che avrei dovuto usare una sorta di dichiarazione "SE".
se il disco inserito poi se lo script cd audio run rip 1 se lo script run DVD rip 2 se lo script blu-ray run RIP 3 ELSE senza CD inserito
ho fatto un po 'googling e trovato qualche codice in vari luoghi che utilizza variabili ambientali per funzionare. Tuttavia da ulteriori informazioni su google, sembra che queste variabili non siano definite fino a quando non viene fatto riferimento a UDEV?
Il mio approccio abituale è quello di costruire una linea di codice, eseguire in terminale e se ottengo ciò che voglio, metto tutte le linee insieme in uno script di shell?
Il codice su cui sto lavorando è il seguente. Penso che se logicamente potessi far sì che lo script producesse quello che pensa sia nel drive di un file/log, sarebbe stata vinta la metà della battaglia e potrei semplicemente sostituirla con le posizioni degli script che farebbero il corrispondente compito di ripping. . Qualche idea su perchè questo non funziona come voglio?
Ho usato queste pagine per ottenere informazioni da:
https://pathar.tl/blog/the-ultimate-...pping-machine/ https://askubuntu.com/questions/35985...on-of-dvd-disc
Ecco il mio codice:
#!/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
i link non funzionano . – FeedTheWeb