Preiswerte Linux- Kopierstation

On 4. Dezember 2010, in Computer, Linux, by mwrsa

Das ist doch mal was: Da gibt es ein Script, das aus jedem damit eingerichteten PC mit mehreren Brennern eine Kopierstation macht. Absolut geniale Sache das.

Gefunden habe ich das hier (externer Link!), und so siehts aus:

#!/bin/bash
#Bash-Script f|r die alpha Brennstation
#(C) 2004 / QuoVadis
DRIVER=“generic-mmc“
#Hier die vorhandenen CD-Recorder eintragen
RECORDERS=(‚/dev/cdrom0‘ ‚/dev/cdrom1‘)
#Alte Images loeschen
echo „Deleting previous images…“
rm -f image*.iso
rm -f imagefile
eject „${RECORDERS[1]}“ &
sudo beep -l 30 -r 3 -f 2000 -n -l 30 -r 3 -f 3000 -n -l 30 r 3 -f 4000 &
burn()
{
echo „$(date) Insert source/target disk to into $1 to begin.“
while true
do
#Pruefen, ob CD eingelegt
cdrecord -V –inq dev=“$1″ 2>&1 | grep „medium not present“ &> /dev/null
if [ $? != 0 ]
then
echo „$(date) CD loaded on $1. Continuing.“
#Pruefen, ob CD leer
cdrdao disk-info –device „$1“ –driver $DRIVER 2> /dev/null | grep „CD-R empty“ | grep „yes“ &> /dev/null
CDRBLANK=$?
if [ $CDRBLANK == 0 ]
then
#CD ist leer -> ueberpruefe, ob image existiert, dann brennen
if [ -e imagefile ]
then
FILE=`cat imagefile`
fi
if [ -e $FILE ] && [ „$FILE“ != „“ ]
then
echo „$(date) Writing $FILE to $1″
cdrecord -v -sao -eject -driveropts=burnfree gracetime=2 speed=32 dev=“$1“ -data „$FILE“
RESULT=“$?“
#Resultat von cdrecord
if [ $RESULT == 0 ]
then
echo „$(date) Burning completed successfully on drive $1.“
echo „$(date) Insert source/target disk to continue on $1.“
sudo beep -l 20 -r 3 -f 2000 &
else
echo „$(date) Error burning to $1.“
echo „$(date) The disk in $1 may not be correctly written.“
sudo beep -l 500 -f 150 &
fi
else
echo „$(date) Image file $FILE not found! Ejecting $1“
eject „$1″
fi
else
IMAGEFILE=“image$((RANDOM%100)).iso“
#CD enthaelt Daten -> einlesen
echo „$(date) Reading disk in drive $1 into $IMAGEFILE“
dd if=“$1″ of=“$IMAGEFILE“
eject „$1“
echo „$IMAGEFILE“>imagefile
echo „$(date) Disk in drive $1 written to $IMAGEFILE.“
echo „$(date) $IMAGEFILE is now standard image.“
echo „$(date) Insert source/target disk to continue on $1“
sudo beep -l 30 -r 3 -f 2000 -n -l 30 -r 3 -f 3000 -n -l 30 r 3 -f 4000 &
fi
fi
sleep 2
done
}
# burn() fuer jeden Brenner als Subshell starten
LOOPCOUNT=0
for BURNER in ${RECORDERS[@]};
do
(( LOOPCOUNT++ ))
burn „$BURNER“ „$LOOPCOUNT“ &
PIDLIST=“$PIDLIST $!“ #Subshell-PIDs sammeln
done
# Subshells killen, und raus…
trap „kill -9 $PIDLIST; exit 0“ SIGINT EXIT
# Die Sleep-Schleife ist lediglich da, um die Kontrolle ueber die
# Konsole zu behalten, Nachrichtenausgabe und um Ctrl-C abzufangen
while true
do
sleep 1000
done

Ich habs zwar selber noch nicht ausprobiert, muss es auch sicher noch auf meine Rechnerkonfiguration anpassen, aber demnächst werde ich das mal tun!

Dieser Artikel ist mehr ein Reminder für mich als alles andere… ^^

 

Comments are closed.