/root/bin/cdrecord.sh

/root/bin/cdrecord.sh
#!/bin/sh
 
#==============================================================================#
#
# Dieses Skript erstellt aus einem Verzeichnis eine ISO-Datei und brennt diese.
#
#==============================================================================#
#
# Es wird mit dem Kommando "cdrecord -scanbus" nach dem Brenner gesucht.
# Damit er gefunden werden kann, muss der Name des Brenners
# (wie er in der Ausgabe des Kommandos zu sehen ist) unten eingegeben werden.
# Es können auch mehrere Geräte, durch Leerzeichen getrennt, angegeben werden.
#
# Einer meiner Brenner:
# > cdrecord -scanbus
# ...
# scsibus1:
#         1,0,0   100) 'PLEXTOR ' 'PX-891SAF       ' '1.J9' Removable CD-ROM
# ...
#
# hier sind ein paar beispielhaft eingetragen, einer reicht aber :-)
BRENNERNAMEN="PX-755A PX-820SA PX-891SAF"
#
#==============================================================================#
 
#VERSION="v2013030300"
#VERSION="v2018062600"
VERSION="v2020030600"
 
CACHE="128"                                     # in MB
SPEED="4"                                       # 1-6 - fach
BETRIEBSSYSTEM="$(uname -s)"
OSREVISION="$(uname -r | tr -Cd '[0-9]')"
 
#------------------------------------------------------------------------------#
 
if [ "x${1}" != x ] ; then
        V="$(echo "${1}" | sed 's|/$||')"
        IMAGE="${V}.iso"
 
        echo "IMAGE='${IMAGE}'"
 
        if [ -e "${IMAGE}" ] ; then
                echo "Die Datei ${IMAGE} existiert bereits. ABBRUCH"
                exit 2
        fi
 
        APPLICATION_ID="$(basename "${V}" | cut -c 1-128)"
 
        if [ -d "${V}" ] ; then
                if [ "$(uname -s)" = "SunOS" ] ; then
                        # leider unterstuetzt die Solaris-Version den UTF-8-Zeichensatz nicht
                        mkisofs -D -U -R -nobak -A "${APPLICATION_ID}" -pad -input-charset iso8859-15 -o ${IMAGE} ${V}
                elif [ "$(uname -s)" = "FreeBSD" ] ; then
                        mkisofs -D -U -R -nobak -A "${APPLICATION_ID}" -pad -input-charset iso8859-15 -o ${IMAGE} ${V}
                else
                        mkisofs -D -U -R -nobak -A "${APPLICATION_ID}" -pad -input-charset UTF-8 -o ${IMAGE} ${V}
                fi
        fi
else
        echo "$0 [cd-tree]"
        echo "$0 [Datenverzeichnis]"
        echo "$0 /tmp/fritz/cd/"
        echo "$0 /tmp/fritz/cd.iso"
        echo "$0 /tmp/fritz/cd/ /tmp/fratz/cd/"
        echo "$0 /tmp/fritz/cd/ /tmp/fratz/cd.iso"
        exit 1
fi
 
 
#==============================================================================#
for RWNAME in ${BRENNERNAMEN}
do
        BRENNERDEV="$(cdrecord -scanbus | fgrep "${RWNAME}" | awk '{print $1}')"
        if [ -n "${BRENNERDEV}" ] ; then
                echo "${BRENNERDEV}"
                #break
        else
#------------------------------------------------------------------------------#
if [ -z "${BRENNERDEV}" ] ; then
#------------------------------------------------------------------------------#
if [ "${BETRIEBSSYSTEM}" = "NetBSD" ] ; then
        BRENNERDEV="/dev/rcd0d"                 # CD-RW / DVD-RW
elif [ "${BETRIEBSSYSTEM}" = "Linux" ] ; then
        # BRENNERDEV="/dev/scd0"                # CD-RW / DVD-RW
        #BRENNERDEV="/dev/scd1"                  # CD-RW / DVD-RW
        BRENNERDEV="/dev/sr0"                   # CD-RW
        # BRENNERDEV="/dev/sr1"                 # CD-RW / DVD-RW
        #BRENNERDEV="/dev/dvd"                  # DVD-RW
        #BRENNERDEV="3,0,0"                      # CD-RW / DVD-RW
elif [ "${BETRIEBSSYSTEM}" = "FreeBSD" ] ; then
        if [ "${OSREVISION}" -ge "90" ] ; then
                BRENNERDEV="/dev/${BRENNERDEV}"
        else
                if [ -z "$(kldstat | fgrep atapicam)" ] ; then
                        echo "
                        \"/dev/acd0\" funktioniert nicht!
                        Um eine DVD-ROM brennen zu koennen,
                        muss das Modul 'atapicam' geladen sein!
                        Dann erhaelt man das Geraet \"/dev/cd0\",
                        mit dem geht es dann:
                        kldload atapicam
                        echo 'atapicam_load=\"YES\"' >> /boot/loader.conf
                        "
                        kldload atapicam
                fi
        fi
        BRENNERDEV="$(camcontrol devlist|fgrep "${RWNAME}"|awk -F'(' '{sub("[)]","");gsub("[,]","\n");print $2}'|egrep '^cd')"
        if [ -z "${BRENNERDEV}" ] ; then
                BRENNERDEV="$(fgrep "${RWNAME}" /var/log/dmesg.boot|awk -F':' '{print $1}')"
                if [ -z "${BRENNERDEV}" ] ; then
                        #BRENNERDEV="dev=ATA:/dev/acd0"
                        BRENNERDEV="/dev/cd0"                   # 'PLEXTOR ' 'DVDR   PX-820SA ' '1.00' Removable CD-ROM
                fi
        fi
elif [ "${BETRIEBSSYSTEM}" = "SunOS" ] ; then
        #BRENNERDEV="/dev/sr0"                                  # DVD-RW
        #BRENNERDEV="/dev/rdsk/c0t0d0p2"        # CD-RW / DVD-RW
        BRENNERDEV="1,0,0"                      # Solaris 10 U6
else
        echo "nicht unterstuetztes OS..."
        exit
fi
#------------------------------------------------------------------------------#
fi
#------------------------------------------------------------------------------#
        fi
done
#==============================================================================#
 
echo cdrecord -scanbus
echo wodim --devices
echo cdrecord -toc dev=${BRENNERDEV}
 
if [ -z "${1}" ] ; then
        cdrecord -toc dev=${BRENNERDEV}
        echo "$0 [image.iso]"
else
        if [ -d "${1}" ] ; then
                VERZ="`dirname ${1}`"
                DATEI="`basename ${1}`"
                /root/bin/make-iso.sh ${VERZ}/${DATEI}.iso ${1}
                IMAGE="${VERZ}/${DATEI}.iso"
        fi
 
        ##echo "cdrecord -v -eject -fs=${CACHE}m speed=${SPEED} dev=${BRENNERDEV} ${IMAGE}"
        ##cdrecord -v -eject -fs=${CACHE}m speed=${SPEED} dev=${BRENNERDEV} ${IMAGE}
 
        echo "cdrecord -v -eject -fs=${CACHE}m speed=${SPEED} dev=${BRENNERDEV} driveropts=burnfree ${IMAGE}"
        cdrecord -v -eject -fs=${CACHE}m speed=${SPEED} dev=${BRENNERDEV} driveropts=burnfree ${IMAGE}
fi
 
#------------------------------------------------------------------------------#
 
echo "
Es wurde die Datei '${IMAGE}' erstellt, sie kann gelöscht werden.
"