Sida 1 av 1

Uppdatera CD-status

Postat: 23 nov 2013, 22:45
av Johnny Rosenberg
Håller på med ett skript för cd-bränning. Ett problem jag har just nu, är att när jag raderat en skiva måste jag ta ut skivan och sätta in den igen för att skivan ska anses tom:
Funktioner:

Kod: Markera allt

HasMedia () {
	udisks --show-info "${CdRom}" | grep "has media.*1" > /dev/null
	return $?
}

IsNotEmpty () {
	udisks --show-info "${CdRom}" | grep "blank.*0" > /dev/null
	return $?
}
Variabler:

Kod: Markera allt

CdRom="/dev/sr0"
Skivan sitter i och har just raderats med:

Kod: Markera allt

umount "${CdRom}"
cdrecord blank=fast dev="${CdRom}"
Dags att kolla om skivan är tom:

Kod: Markera allt

$ if IsNotEmpty; then echo "Inte tom"; else echo "Tom"; fi
Inte tom
$
Nähä, då plockar vi väl ut den och sätter in den igen:

Kod: Markera allt

eject $CdRom
Under tiden som skivan försöker komma igång testar vi om skivan är tillgänglig:

Kod: Markera allt

$ if HasMedia; then echo "Skiva finns"; else echo "Skiva saknas"; fi
Skiva saknas
$ if HasMedia; then echo "Skiva finns"; else echo "Skiva saknas"; fi
Skiva saknas
$ if HasMedia; then echo "Skiva finns"; else echo "Skiva saknas"; fi
Skiva saknas
$ if HasMedia; then echo "Skiva finns"; else echo "Skiva saknas"; fi
Skiva finns
$
Okej, skivan är detekterad, men är den tom?

Kod: Markera allt

$ if IsNotEmpty; then echo "Inte tom"; else echo "Tom"; fi
Tom
$
Självklart är den tom; jag har ju just raderat den…

Och nu till min fråga: Kan jag få datorn att ”läsa om” skivan på något sätt, så att jag slipper öppna och stänga cd-släden varje gång?

Re: Uppdatera CD-status

Postat: 24 nov 2013, 22:30
av Johnny Rosenberg
Och här kommer svaret alla väntat på:

Kod: Markera allt

udisks --poll-for-media $CdRom
där CdRom i mitt fall är

Kod: Markera allt

/dev/sr0
Sedan om det finns fler lösningar vet jag ju inte, men det gör det ju säkert.
Nackdelen med denna lösning är att om man ska ha den i ett skript i Gedit och har färglagda nyckelord, kommer ordet ”for” i ”--poll-for-media” att ställa till det så att färgkodningen blir helt fel efter kommandot…
För att kringgå detta tvingades jag att använda fnuttar (jag använde enkelfnuttar men jag antar att även dubbelfnuttar hade fungerat):

Kod: Markera allt

udisks '--poll-for-media' $CdRom
Annars kan man ju ändra i filen som styr hur färgkodningen går till, jag har varit där och rotat förr, bland annat för att få färgkodning på vanliga program jag använder, som zenity och yad. Det kanske går att ändra funktionen för hur ”for” färgkodas så att det funkar ändå, men det känns som lite overkill när det verkar funka med enkelfnuttar.