bash: warten auf schliessen des CD-Laufwerkes

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
t2x
Beiträge: 24
Registriert: 19.07.2003 12:46:57

bash: warten auf schliessen des CD-Laufwerkes

Beitrag von t2x » 11.08.2004 09:52:00

Hi,
ich steh beim Scripten vor einem bloeden Problem.
Das Skript schreibt mehrer DVD's. Wenn nun eine erfolgreich geschrieben wurde
wird diese mittels eject aus dem Laufwerk geschoben. Nun muss ich die Rohlinge per
Hand wechseln und das DVD-Laufwerk wieder schliessen. Solange sollte mein Skript
natuerlich nichts machen. Gibt es also irgendeine Variable/Eintrag/Programm das mir das
schliessen der Schublade anzeigt, damit ich danach mit meinem Skript fortfahren kann?

Das Script soll spaeter mal als Cron-Job laufen und daher ist die Variante mir warten durch
read foo nicht moeglich.

Thx t2x

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 11.08.2004 18:29:43

Hmm... Irgendwer muss doch die CD wechseln, oder? Oder soll das Laufwerk einfach permanent offen bleiben und nur zum brennen zu gehen (nicht gut: die Optik staubt zu)?

Ich habe das mit meinem Brenner gerade 'mal getestet: "eject -t /dev/hdc" beendet sich erst, wenn die Schublade zu ist, insofern sollte das schon gehen... Es kann natürlich (und das vermute ich...) ein Problem sein, dass es trotzdem noch etwas dauert, bis das CD-ROM OK ist...

Ginge folgendes: Laufwerk mit "eject -t /dev/hdc" schliessen, dann mit "sleep 10" für 10 Sekunden warten, und dann mit dem Skript weitermachen?

Mir wäre jetzt nicht bekannt, dass man im Prinzip auf ein "Drive Ready" oder so warten könnte, aber ich habe auch noch nie geschaut...

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

t2x
Beiträge: 24
Registriert: 19.07.2003 12:46:57

Beitrag von t2x » 11.08.2004 23:11:43

Naja es ist so gedacht:
Ich hab einen Rechner der automatisch ein Backup anfertigen soll und das auf die DVD brennen soll. Nun kann es natuerlich vorkommen das ein Backup ueber mehrere DVD's geht.
Also will ich die erste automatisch brennen. Dann per Hand die DVD wechseln und das Skript automatisch weiterlaufen lassen.
Da ich ein vergesslicher(fauler) Mensch bin will ich das ganze per Cron erledigen und nur wenn die Schublade offen ist die DVD wechseln.
Oder kann man vielleicht irgendwie ein SIGUSR1 in einem bash-Script abfragen (besser darauf warten)?

Das mit eject -t hilft mir nicht wirklich weiter, da dort ja nur das Tray automatischen geschlossen wird. Trotzdem danke fuer die Antwort

Thx t2x

Benutzeravatar
MacGyver031
Beiträge: 628
Registriert: 18.08.2003 11:24:49
Wohnort: Wiedlisbach, Schweiz
Kontaktdaten:

Beitrag von MacGyver031 » 11.08.2004 23:16:14

Hallo,
du machst doch die "brennerei" mit cdrecord oder?

Falls ja, soltest du ohne die option -eject machen und dafür eine weiter zeile mit dem eject -t versuchen.
Sincerely your
MacGyver

SysInfo:
Intel Centrino 1.3GHz, 1GB, ATI M9, 1400x1050.
2.6.23, xorg-x11 7.2 Fluxbox 1.0.0 and many more.

t2x
Beiträge: 24
Registriert: 19.07.2003 12:46:57

Beitrag von t2x » 11.08.2004 23:23:06

Irgendwie will das bei mir mit dem eject -t nicht klappen.
Allerdings hab ich gerade dieses hier gefunden
http://coder.home.cosmic-cow.net/src/trayopen.c

Code: Alles auswählen

/* Sleeps until CD/DVD/etc tray is closed. Perfect for writing
 * shell/perl scripts to impliment mass burning.
 * 
 * -MadCamel 2004, public domain
 */
#define CDDEV "/dev/cdr"

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <sys/wait.h>
#include <linux/types.h>
#include <linux/cdrom.h>
#include <linux/fd.h>


int main() {
	int fd;

	if ((fd = open(CDDEV, O_RDONLY|O_NONBLOCK)) < 0)
	{
		perror(CDDEV);
		return(1);
	}

	while ((ioctl(fd, CDROM_DRIVE_STATUS, NULL)) == CDS_TRAY_OPEN)
		sleep(1);
}
Funktioniert fuer mich perfekt. Danke allen die versucht haben mir zu helfen.
Thx t2x

Benutzeravatar
MacGyver031
Beiträge: 628
Registriert: 18.08.2003 11:24:49
Wohnort: Wiedlisbach, Schweiz
Kontaktdaten:

Beitrag von MacGyver031 » 11.08.2004 23:28:01

Könntest du mal dein Skript posten? Ich denke dass nich nur ich daran Interessiert währe sein system via cron zu backuppen.

Tx
Sincerely your
MacGyver

SysInfo:
Intel Centrino 1.3GHz, 1GB, ATI M9, 1400x1050.
2.6.23, xorg-x11 7.2 Fluxbox 1.0.0 and many more.

Antworten