Hallo, ich versuche, ein Skript zu erstellen, um mit cdemu ein Image zu mounten (weil gcdemu bei mir nie funktioniert).
Ich versuche, eine Liste der unterstützten Formate zu erstellen
$ cdemu enum-parsers
Supported parsers:
PARSER-MDX: MDX Image Parser
application/x-mdx: DaemonTools images (*.mdx, *.mds)
PARSER-HD: Hard-disk Image Parser
application/x-apple-diskimage: Apple Disk image (*.cdr)
application/x-apple-diskimage: Apple Disk image (*.smi)
application/x-apple-diskimage: Apple Disk image (*.img)
PARSER-READCD: READCD Image Parser
application/x-cd-image: readcd images (*.toc)
PARSER-ISO: ISO Image Parser
application/x-cd-image: ISO images (*.iso, *.bin, *.img)
audio/x-wav: WAV audio files (*.wav)
PARSER-XCDROAST: X-CD-Roast Image Parser
application/x-xcdroast: X-CD-Roast images (*.toc)
PARSER-CCD: CCD Image Parser
application/x-ccd: CloneCD images (*.ccd)
PARSER-C2D: C2D Image Parser
application/x-c2d: WinOnCD images (*.c2d)
PARSER-CDI: CDI Image Parser
application/x-cdi: DiscJuggler images (*.cdi)
PARSER-B6T: B6T Image Parser
application/x-b6t: BlindWrite 5/6 images (*.b5t, *.b6t)
PARSER-NRG: NRG Image Parser
application/x-nrg: Nero Burning Rom images (*.nrg)
PARSER-CUE: CUE Image Parser
application/x-cue: CUE images (*.cue)
PARSER-TOC: TOC Image Parser
application/x-cdrdao-toc: cdrdao images (*.toc)
PARSER-MDS: MDS Image Parser
application/x-mds: Alchohol 120% images (*.mds)
application/x-xmd: GameJack images (*.xmd)
PARSER-CIF: CIF Image Parser
application/x-cif: Adaptec Easy CD/DVD Creator images (*.cif)
Ich muss die unterstützte Formatliste extrahieren und in ein neues Array einfügen, wie
SuportedFormats=(
mdx
mds
cdr
smi
img
toc
ccd
c2d
cdi
b5t
b6t
nrg
cue
xmd
cif)
aber die Formatliste kann sich je nach CDEMU-Version ändern.
Außerdem möchte ich die Erweiterung für Großbuchstaben in Kleinbuchstaben ändern. Ich versuche es mit
tr '[:upper:]' '[:lower:]' "${1##*.}"
Aber ich weiß nicht, wie ich es benutzen soll
Antwort1
So erhalten Sie eine Liste der Dateierweiterungen (erfordert GNU grep):
$ cdemu enum-parsers | grep -oP '(?<=\*\.)[^,)]*'
mdx
mds
cdr
smi
img
toc
iso
bin
img
wav
toc
ccd
c2d
cdi
b5t
b6t
nrg
cue
toc
mds
xmd
cif
So fügen Sie diese Erweiterungen in ein Array ein:
$ SupportedFormats=($(cdemu enum-parsers | grep -oP '(?<=\*\.)[^,)]*'))
Um zu überprüfen, ob wir das richtige Array haben, führen Sie Folgendes aus declare -p
:
$ declare -p SupportedFormats
declare -a SupportedFormats=([0]="mdx" [1]="mds" [2]="cdr" [3]="smi" [4]="img" [5]="toc" [6]="iso" [7]="bin" [8]="img" [9]="wav" [10]="toc" [11]="ccd" [12]="c2d" [13]="cdi" [14]="b5t" [15]="b6t" [16]="nrg" [17]="cue" [18]="toc" [19]="mds" [20]="xmd" [21]="cif")
Konvertieren in Kleinbuchstaben
Alle Erweiterungen in Ihrem Beispiel waren klein geschrieben. Wenn Sie wirklich in Kleinbuchstaben konvertieren müssen, können Sie Folgendes verwenden tr
:
SupportedFormats=($(cdemu enum-parsers | grep -oP '(?<=\*\.)[^,)]*' | tr '[:upper:]' '[:lower:]'))
tr
ist nicht Unicode-sicher. Wenn Ihre Strings Unicode sind, dann sed
ist die bessere Wahl (GNU sed erforderlich):
SupportedFormats=($(cdemu enum-parsers | grep -oP '(?<=\*\.)[^,)]*' | sed -E 's/[[:upper:]]/\L&/g'))
Antwort2
Nun, ich versuche, mein Skript zu erstellen, funktioniert mit Xfce 4.12 und Thunar, aber funktioniert nicht
#!/usr/bin/env bash
echo '
Autor ----------------> Inukaze ( Venezuela )
Sitio ----------------> inukaze.wordpress.com
Correo-E -------------> [email protected]
Licencia -------------> GPL 2
******* Inicio : Acerca de este Script ********
Este Mini-Script es para poder Montar
Imagen(es) de Disco(s) Compacto(s)
de forma sencilla. sin necesidad
del fallido "gcdemu" (Solo me da errores)
******** Fin : Acerca de este Script **********'
# NOTAS
#
# 1 - Verificar el Demonio
# 2 - Verificar que existe por lo menos una unidad virtual, en caso de que no, crear una
# 3 - En caso de que si exista, pero ya este montada una imagen, desmontar la imagen para montar la más nueva
#
# Patron de "Imagen" y "Otros Archivos" para Thunar :
# *.mdx;*.mds;*.cdr;*.smi;*.img;*.toc;*.ccd;*.c2d;*.cdi;*.b5t;*.b6t;*.nrg;*.cue;*.xmd;*.cif;*.iso
# Asegurarse de que el demonio esta en ejecucion
DEMONIO=$(ps -A | grep cdemu-daemon | awk '{print $1}')
if [ "$DEMONIO" == "$(pgrep cdemu-daemon)" ] ; then
DEMONIO=$(echo "Demonio cargado y funcionando") ; echo "$DEMONIO"
else zenity --error --text 'El Demonio "cdemu" no esta cargado, Abortando.'; exit 1
fi
FormatoSoportado=($(cdemu enum-parsers | grep -oP '(?<=\*\.)[^,)]*'))
declare -p FormatoSoportado 2&>/dev/null
#Minusculas=$(sed -E 's/[[:upper:]]/\L&/g')
# Comprobar que existe por lo menos un dispositivo virtual, si no existe crear uno
DISPOSITIVO=$(cdemu --bus session status | grep "0" | tail -n1 | awk '{print $1}')
if [ ! $DISPOSITIVO ]; then
cdemu add-device
fi
DISPOSITIVO=$(cdemu --bus session status | grep -E 'LOADED|True' | awk '$2=="True"' | awk '{print $2}')
if [ "$DISPOSITIVO" == "True" ]; then
#ARCHIVO=$(cdemu --bus session status | awk '{ print $3 $6 }' | tail -n1)
cdemu unload 0
#zenity --error --text "No puedes cargar más imagenes. Dispositivo Ocupado.\n$ARCHIVO"; exit 1
fi
DISPOSITIVO=$(cdemu --bus session status | grep -E 'LOADED|False' | awk '$2=="False"' | awk '{print $2}')
if [ "$DIPOSITIVO" == "False" ]; then
NOMBRE="$(basename "$@")"
NOMBRE=$(echo "$NOMBRE" | sed 's/[*.*].*//')
RUTA=$(echo $(cd $(dirname "$1") && pwd -P)/$(basename "$1"))
cdemu load 0 "$NOMBRE.${#FormatoSoportado[@]}"
fi
Die Idee für mich ist einfach
- Überprüfen Sie, ob der cdemu-Daemon ausgeführt wird
- Überprüfen Sie, ob ein Gerät vorhanden ist. Wenn nicht, erstellen Sie eines.
- Wenn ein Gerät vorhanden ist, prüfen Sie, ob ein Image gemountet ist, und demontieren Sie das Image.
- Mounten Sie das neueste Image