Bonjour.
Je me suis amusé à faire un script afin de pouvoir graver facilement en ligne de commande (ben oui, c'est plus léger quand on a un vieux pc, et puis c'étiat pour le challenge)
Si cela intéresse quelqu'un, je le met ici. N'hésitez surtout pas à le modifier, parler des améliorations à apporter, et rapporter des erreurs :
#!/bin/bash
#nécessite genisoimage, wodim, éventuellement oggdec, sox, lame, flac pour les conversions
SB="#AFAFAF"
SF="#000000"
NB="#0C0C0C"
NF="#D4D4D4"
DIALOG=dialog
LISTE=/tmp/liste
LISTEAGRAVER=/tmp/liste_graver
TMPDIR=/tmp/gravure
choix_fichier_ () {
#Fonction va choisir le fichier
#on quitte lorsque l'on rentre la valeur 0
while [ "$FICHIER" != 0 ]; do
ls -a -p -X | sed = | sed 'N;s/\n/\t/' > $LISTE
cat $LISTE
echo "------------------------------------------"
echo -e "0 \t Fini! \n"
read CHOIX
if [ "$CHOIX" = 0 ]; then
break
else
FICHIER=$(echo "$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F"\t" '{print $2}')")
# Le nom du fichier est enregistré dans /tmp/liste_graver
#S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans
case $FICHIER in
*/ | .. ) echo "1) Allez ici $FICHIER"
echo "2) Ajouter"
read R
case $R in
1 ) cd $FICHIER ;;
2 ) echo $FICHIER >> $LISTEAGRAVER ;;
esac
;;
*) echo $FICHIER >> $LISTEAGRAVER ;;
esac
fi
done
}
edite_ () {
echo -e "Voici la liste des fichiers à graver : \n"
cat $LISTEAGRAVER
echo -e "\n \n"
echo -e "1)\t Ajouter des fichiers "
echo -e "2)\t Enlever des fichiers"
echo -e "0)\t Fini! "
read CHOIX
while [ "$CHOIX" != 0 ]; do
case $CHOIX in
1 ) choix_fichier_ ;;
0 ) break ;;
2 ) echo "Que supprimer?"
cat $LISTEAGRAVER | sed = | sed 'N;s/\n/\t/'
read SUPPR
sed ${SUPPR}d $LISTEAGRAVER > /tmp/listetmp
mv /tmp/listetmp $LISTEAGRAVER
;;
esac
echo -e "Voici la liste des fichiers à graver : \n"
cat $LISTEAGRAVER
echo -e "\n \n"
echo -e "1)\t Ajouter des fichiers \n "
echo -e "2)\t Enlever des fichiers \n "
echo -e "0)\t Fini! \n"
read CHOIX
done
}
verif_integrite_ () {
#controle de l'image
echo "md5sum de l'iso :"
md5sum $1 | awk '{print $1}'
echo "md5sum du cd gravé:"
md5sum /dev/scd0 | awk '{print $1}'
if [ "$(md5sum $1 | awk '{print $1}')" != "$(md5sum /dev/scd0 | awk '{print $1}')" ]; then
echo "ATTENTION, IL Y A EU UN PROBLÈME LORS DE LA GRAVURE!!!!!!"
else
echo "OK!"
fi
}
grave_iso_ () {
echo "Choisissez l'image iso à graver"
choix_fichier_
if [ -n "$(cat $LISTEAGRAVER)" ]; then
echo "on va graver $(cat $LISTEAGRAVER)"
echo -e "L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')"
echo "Assurez-vous que votre cd/dvd est assez grand"
echo "On y va? (O/N)"
read CHOIX
case $CHOIX in
O | o )
wodim -v dev=/dev/scd0 -data "$(cat $LISTEAGRAVER)"
verif_integrite_ "$(cat $LISTEAGRAVER)"
;;
N | n ) echo "annulation de la gravure"
;;
esac
fi
}
grave_donnees_ () {
choix_fichier_
#on édite la liste qui est à graver :
edite_
echo "Quel est le nom du volume?"
read NOMVOLUME
if [ -n "$(cat $LISTEAGRAVER)" ]; then
###on lance la gravure
genisoimage -R -r -J --hide-rr-moved -V "$NOMVOLUME" -o /tmp/$NOMVOLUME.iso "$(cat $LISTEAGRAVER)"
#on affiche un avertissement sur la taille du fichier à graver
echo -e "L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')"
echo "Assurez-vous que votre cd/dvd est assez grand"
echo "On y va? (O/N)"
read CHOIX
case $CHOIX in
O | o )
wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
verif_integrite_ /tmp/$NOMVOLUME.iso
;;
N | n ) echo "annulation de la gravure"
;;
esac
fi
}
grave_audio_ () {
mkdir -p $TMPDIR
[ -d $TMPDIR ]
if [ $? = 0 ]; then
choix_fichier_
edite_
echo -e "\n \n On va maintenant convertir les fichiers pour les graver"
cd $TMPDIR
cp "$(cat $LISTEAGRAVER )" $TMPDIR
for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done
for i in *.MP3; do mv "$i" "`basename "$i" .MP3`.mp3"; done
echo "conversion des mp3 en wav"
for i in *.mp3; do
lame --verbose --decode "$i" "${i/%.mp3/.wav}";
done
echo "conversion des ogg en wav"
oggdec *.ogg
echo "conversion des flac en wav"
flac --decode *.flac
echo "normalisation"
normalize-audio --mix *.wav
for i in *.wav ; do
echo "Traitement de ${i}"
sox "$i" "${i/%.wav/.cdr}"
done
#on affiche un avertissement sur la taille du fichier à graver
echo -e "Les données à graver font: \t $(du -h $TMPDIR | tail -n1 | awk '{print $1}')"
echo "Assurez-vous que votre cd est assez grand"
echo "On y va? (O/N)"
read CHOIX
case $CHOIX in
O | o )
echo -e " \tOn va maintenant graver!!! \n \n "
sleep 2
wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
;;
N | n ) echo "annulation de la gravure"
;;
esac
fi
}
efface_disque_ () {
echo "Comment souhaitez-vous effacer le disque?"
echo -e "1 \t Effacement complet"
echo -e "2 \t Effacement rapide "
echo -e "0 \t Annuler "
read EFFACEMENT
while [ "$EFFACEMENT" != 0 ]; do
case $EFFACEMENT in
2 )
echo "C'est parti pour un effacement rapide :"
sleep 1
wodim blank=fast
break
;;
1 )
echo "C'est parti pour un effacement complet :"
sleep 1
wodim blank=all
break
;;
esac
read EFFACEMENT
done
}
echo -e "\t Bonjour!
Ce Script va vous permettre de graver facilement vos données\n "
while [ "$GRAVURE" != 0 ]; do
echo -e "Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n"
echo -e "1 \t Un disque de données "
echo -e "2 \t Un disque audio "
echo -e "3 \t Graver une image iso "
echo -e "4 \t Effacer le disque "
echo -e "0 \t Quitter "
read GRAVURE
case $GRAVURE in
1 ) grave_donnees_ ;;
2 ) grave_audio_ ;;
3 ) grave_iso_ ;;
4 ) efface_disque_ ;;
0 ) echo "Bye bye o/" ; exit 2 ;;
esac
done
exit 0