« Graver en ligne de commande » : différence entre les versions

Aller à la navigation Aller à la recherche
m
ajout de numérotation des lignes par <syntaxhighlight lang="bash" line='line'>
m (change <pre> en ajout d'un espace en début de ligne)
m (ajout de numérotation des lignes par <syntaxhighlight lang="bash" line='line'>)
 
(2 versions intermédiaires par le même utilisateur non affichées)
Ligne 5 : Ligne 5 :
Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.
Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.


#!/bin/sh
<syntaxhighlight lang="sh" line='line'>
#-----------------------------------------------#
#!/bin/sh
# Script pour graver en console plus facilement #
#-----------------------------------------------#
# nécessite genisoimage, wodim,                #
# Script pour graver en console plus facilement #
# éventuellement oggdec, sox,  lame, flac...    #
# nécessite genisoimage, wodim,                #
# pour les conversions de fichiers audio        #
# éventuellement oggdec, sox,  lame, flac...    #
#-----------------------------------------------#
# pour les conversions de fichiers audio        #
#-----------------------------------------------#
#------------------ Reste à Faire : -----------------------------#
 
# Préciser les dépendances                                      #
#------------------ Reste à Faire : -----------------------------#
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Préciser les dépendances                                      #
# Revoir la gravure de fichiers audio                            #
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Une meilleure vérification des données                        #
# Revoir la gravure de fichiers audio                            #
#----------------------------------------------------------------#
# Une meilleure vérification des données                        #
#----------------------------------------------------------------#
set -eu
 
set -eu
LISTE=/tmp/liste
 
LISTEAGRAVER=/tmp/liste_graver
LISTE=/tmp/liste
TMPDIR=/tmp/gravure
LISTEAGRAVER=/tmp/liste_graver
GRAVURE='1'
TMPDIR=/tmp/gravure
GRAVURE='1'
ERR_INTEGR=101
 
ERR_INTEGR=101
choix_fichier_ () {
 
  local FICHIER=''
choix_fichier_ () {
  local FICHIER=''
# Fonction qui va choisir le fichier
 
# on quitte lorsque l'on rentre la valeur 0
# Fonction qui va choisir le fichier
# On enregistre une liste des fichiers, le choix fait est reporté
# on quitte lorsque l'on rentre la valeur 0
# dans la LISTEAGRAVER
# On enregistre une liste des fichiers, le choix fait est reporté
  case "$1" in
# dans la LISTEAGRAVER
    'iso' )
  case "$1" in
    'iso' )
;;
 
'donnees' )
;;
      echo 'Choisir la liste des fichiers à ajouter :'
'donnees' )
  while [ "$FICHIER" != 0 ]; do
      echo 'Choisir la liste des fichiers à ajouter :'
  while [ "$FICHIER" != 0 ]; do
      ls -ApX | nl -n ln | tee "$LISTE"
 
  echo '------------------------------------------'
      ls -ApX | nl -n ln | tee "$LISTE"
  echo  "0 \t J'ai fini! \n"
  echo '------------------------------------------'
  read CHOIX
  echo  "0 \t J'ai fini! \n"
  if [ "$CHOIX" = 0 ]; then
  read CHOIX
  break
  if [ "$CHOIX" = 0 ]; then
  else
  break
  FICHIER=$(echo "$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F"\t" '{print $2}')")
  else
  # Le nom du fichier est enregistré dans /tmp/liste_graver
  FICHIER=$(echo "$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F"\t" '{print $2}')")
  #S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans
  # 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) Changer de répertoire : $FICHIER"
  case "$FICHIER" in
    echo '2) Ajouter ce répertoire pour le graver'
          */ | .. ) echo "1) Changer de répertoire : $FICHIER"
    read R
    echo '2) Ajouter ce répertoire pour le graver'
    case $R in
    read R
    1 ) cd "$FICHIER" ;;
    case $R in
    2 ) echo "$FICHIER" >> "$LISTEAGRAVER" ;;
    1 ) cd "$FICHIER" ;;
        esac
    2 ) echo "$FICHIER" >> "$LISTEAGRAVER" ;;
      ;;
        esac
        *) echo "$FICHIER" >> "$LISTEAGRAVER" ;;
      ;;
    esac
        *) echo "$FICHIER" >> "$LISTEAGRAVER" ;;
    fi
    esac
  done
    fi
;;
  done
esac
;;
}
esac
}
 
edite_ () {
 
  local C=1
edite_ () {
  while [ "$C" != 0 ]; do
  local C=1
  echo  "Voici la liste des fichiers à graver : \n"
  while [ "$C" != 0 ]; do
  cat "$LISTEAGRAVER"
  echo  "Voici la liste des fichiers à graver : \n"
  echo  "\n \n"
  cat "$LISTEAGRAVER"
  echo  "1)\t Ajouter des fichiers "
  echo  "\n \n"
  echo  "2)\t Enlever des fichiers"
  echo  "1)\t Ajouter des fichiers "
  echo  "0)\t J'ai fini! "
  echo  "2)\t Enlever des fichiers"
  read C
  echo  "0)\t J'ai fini! "
  case $C in
  read C
  1 ) choix_fichier_ ;;
  case $C in
  0 ) break ;;
  1 ) choix_fichier_ ;;
  2 ) echo 'Que supprimer?'
  0 ) break ;;
        nl -n ln "$LISTEAGRAVER"
  2 ) echo 'Que supprimer?'
  read SUPPR
        nl -n ln "$LISTEAGRAVER"
  if  [ "$SUPPR" -le $(wc -l < "$LISTEAGRAVER") ] && [ "$SUPPR" != "" ] ; then
  read SUPPR
  sed ${SUPPR}d "$LISTEAGRAVER" > /tmp/listetmp
  if  [ "$SUPPR" -le $(wc -l < "$LISTEAGRAVER") ] && [ "$SUPPR" != "" ] ; then
  mv /tmp/listetmp $LISTEAGRAVER
  sed ${SUPPR}d "$LISTEAGRAVER" > /tmp/listetmp
  else
  mv /tmp/listetmp $LISTEAGRAVER
  echo "*** Erreur, ce numéro n'est pas disponible ***"
  else
  echo '*** Entrez un choix valide ***'
  echo "*** Erreur, ce numéro n'est pas disponible ***"
  fi
  echo '*** Entrez un choix valide ***'
  ;;
  fi
  * ) echo 'Veuillez entrer un choix valide' ;;
  ;;
  esac
  * ) echo 'Veuillez entrer un choix valide' ;;
  esac
    done
 
}
  done
}
# controle de l'image
 
# Retourne 0 si le CD gravé est conforme à l'image ISO,
# controle de l'image
# 1 sinon.
# Retourne 0 si le CD gravé est conforme à l'image ISO,
verif_integrite_ () {
# 1 sinon.
  local MD5_ISO=$(md5sum "$1" | awk '{print $1}')
verif_integrite_ () {
  echo "md5sum de l'iso : $MD5_ISO" >&2
  local MD5_ISO=$(md5sum "$1" | awk '{print $1}')
  local MD5_CD=$(md5sum /dev/scd0 | awk '{print $1}')
  echo "md5sum de l'iso : $MD5_ISO" >&2
  echo "md5sum du cd gravé: $MD5_CD" >&2
  local MD5_CD=$(md5sum /dev/scd0 | awk '{print $1}')
  echo "md5sum du cd gravé: $MD5_CD" >&2
  # Donne à la fonction sa valeur de retour
 
  [ "$MD5_ISO" -eq "$MD5_CD" ]
  # Donne à la fonction sa valeur de retour
}
  [ "$MD5_ISO" -eq "$MD5_CD" ]
}
grave_iso_ () {
 
  echo "Choisissez l'image iso à graver"
grave_iso_ () {
  choix_fichier_ 'iso'
  echo "Choisissez l'image iso à graver"
  choix_fichier_ 'iso'
  if [ -n "$(cat $LISTEAGRAVER)" ]; then
 
    echo "on va graver $(cat $LISTEAGRAVER)"
  if [ -n "$(cat $LISTEAGRAVER)" ]; then
    echo  "L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')"
    echo "on va graver $(cat $LISTEAGRAVER)"
    echo  'Assurez-vous que votre cd/dvd est assez grand'
    echo  "L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')"
    echo 'On y va? (O/N)'
    echo  'Assurez-vous que votre cd/dvd est assez grand'
    read CHOIX
    echo 'On y va? (O/N)'
    case $CHOIX in
    read CHOIX
      O | o )
    case $CHOIX in
        wodim -v dev=/dev/scd0 -data "$(cat $LISTEAGRAVER)"
      O | o )
        if ! verif_integrite_ "$(cat $LISTEAGRAVER)"; then
        wodim -v dev=/dev/scd0 -data "$(cat $LISTEAGRAVER)"
          echo "Erreur: echec lors de la vérification d'intégrité" >&2
        if ! verif_integrite_ "$(cat $LISTEAGRAVER)"; then
          exit $ERR_INTEGR
          echo "Erreur: echec lors de la vérification d'intégrité" >&2
        fi
          exit $ERR_INTEGR
        ;;
        fi
      N | n ) echo "annulation de la gravure"
        ;;
        ;;
      N | n ) echo "annulation de la gravure"
    esac
        ;;
    esac
  fi
}
 
grave_donnees_ () {
choix_fichier_ 'donnees'
echo '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
echo "Creation de l'image à graver"
genisoimage -R -r -J --hide-rr-moved -V "$NOMVOLUME" -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
if [ ! -f /tmp/$NOMVOLUME.iso ]; then
echo "Erreur lors de la création de l'image"
exit 666
fi
#on affiche un avertissement sur la taille du fichier à graver
echo  "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
  if ! verif_integrite_ /tmp/$NOMVOLUME.iso; then
          echo "Erreur: echec lors de la vérification d'intégrité" >&2
          exit $ERR_INTEGR
        fi
;;
N | n ) echo "annulation de la gravure"
;;
esac
fi
}
 
grave_audio_ () {
  mkdir -p $TMPDIR
  [ -d $TMPDIR ]
    if [ $? = 0 ]; then
      choix_fichier_
      edite_
      echo  "\n \n On va maintenant convertir les fichiers pour les graver"
      cd $TMPDIR
      cp "$(cat $LISTEAGRAVER )" $TMPDIR
      echo "conversion des mp3 en wav"
      for i in *.[Mm][Pp]3; 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 "Les données à graver font: \t $(du -sh $TMPDIR | 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  " \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
   fi
}
}
 
grave_donnees_ () {
efface_disque_ () {
choix_fichier_ 'donnees'
  local EFFACEMENT=1
echo 'on édite la liste qui est à graver :'
while [ "$EFFACEMENT" != 0 ]; do
edite_
echo "Comment souhaitez-vous effacer le disque?"
echo 'Quel est le nom du volume ?'
echo  "1 \t Effacement complet"
read NOMVOLUME
echo  "2 \t Effacement rapide "
if [ -n "$(cat $LISTEAGRAVER)" ]; then
echo  "0 \t Annuler "
  ###on lance la gravure
read EFFACEMENT
echo "Creation de l'image à graver"
 
genisoimage -R -r -J --hide-rr-moved -V "$NOMVOLUME" -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
case $EFFACEMENT in
if [ ! -f /tmp/$NOMVOLUME.iso ]; then
2 )
echo "Erreur lors de la création de l'image"
echo "C'est parti pour un effacement rapide :"
exit 666
sleep 1
fi
wodim blank=fast
#on affiche un avertissement sur la taille du fichier à graver
break
echo  "L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')"
;;
echo  "Assurez-vous que votre cd/dvd est assez grand"
1 )
echo "On y va? (O/N)"
echo "C'est parti pour un effacement complet :"
read CHOIX
sleep 1
case $CHOIX in
wodim blank=all
O | o )
break
  wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
;;
  if ! verif_integrite_ /tmp/$NOMVOLUME.iso; then
* ) echo 'Veuillez entrer un choix valide' ;;
          echo "Erreur: echec lors de la vérification d'intégrité" >&2
esac
          exit $ERR_INTEGR
done
        fi
}
;;
 
N | n ) echo "annulation de la gravure"
echo '                    |//'
;;
echo '                    (o o)'
esac
echo '+-------------oOO----(_)---------------------+'
fi
echo '|--------------------------------------------|'
}
echo '|---------------- ¤ BONJOUR ! ¤ -------------|'
echo '|----- ¤ Ce Script va vous permettre ¤ ------|'
grave_audio_ () {
echo '|--------- ¤ de graver facilement ¤ ---------|'
  mkdir -p $TMPDIR
echo '|-------------- ¤ vos données ¤ -------------|'
  [ -d $TMPDIR ]
echo '+--------------------oOO---------------------+'
    if [ $? = 0 ]; then
echo '                  |__|__|'
      choix_fichier_
echo '                    || ||'
      edite_
echo '                  ooO Ooo'
      echo  "\n \n On va maintenant convertir les fichiers pour les graver"
echo " \n \n \n "
      cd $TMPDIR
 
      cp "$(cat $LISTEAGRAVER )" $TMPDIR
while [ "$GRAVURE" != 0 ]; do
      echo "conversion des mp3 en wav"
echo  "Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n"
      for i in *.[Mm][Pp]3; do
echo  "1 \t Un disque de données "
        lame --verbose --decode "$i" "${i%.mp3}.wav";
#echo  "2 \t Un disque audio "
      done
echo  "2 \t Graver une image iso "
      echo "conversion des ogg en wav"
echo  "3 \t Effacer le disque "
      oggdec *.ogg
echo  "0 \t Quitter "
      echo "conversion des flac en wav"
read GRAVURE
      flac --decode *.flac
 
      echo "normalisation"
case $GRAVURE in
      normalize-audio --mix *.wav
1 ) grave_donnees_ ;;
      for i in *.wav ; do
#2 ) grave_audio_ ;;
        echo "Traitement de ${i}"
2 ) grave_iso_ ;;
        sox "$i" "${i/%.wav/.cdr}"
3 ) efface_disque_ ;;
      done
0 )
#on affiche un avertissement sur la taille du fichier à graver
echo '
      echo "Les données à graver font: \t $(du -sh $TMPDIR | awk '{print $1}')"
                        ''~''
      echo 'Assurez-vous que votre cd est assez grand'
                        ( o o )
      echo 'On y va? (O/N)'
+------------------.oooO--(_)--Oooo.------------------+
      read CHOIX
|                                                    |
      case $CHOIX in
|                      À BIENTÔT                      |
        O | o )
|                    .oooO                            |
          echo  " \tOn va maintenant graver!!! \n \n "
|                    (  )  Oooo.                    |
          sleep 2
+---------------------\ (----(  )--------------------+
          wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
                      \_)    ) /
        ;;
                            (_/
        N | n ) echo 'annulation de la gravure'
'
        ;;
exit 2
      esac
;;
    fi
* ) echo 'Veuillez entrer un choix valide' ;;
}
esac
done
efface_disque_ () {
 
  local EFFACEMENT=1
while [ "$EFFACEMENT" != 0 ]; do
echo "Comment souhaitez-vous effacer le disque?"
echo  "1 \t Effacement complet"
echo  "2 \t Effacement rapide "
echo  "0 \t Annuler "
read EFFACEMENT
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
;;
* ) echo 'Veuillez entrer un choix valide' ;;
esac
done
}
echo '                    |//'
echo '                    (o o)'
echo '+-------------oOO----(_)---------------------+'
echo '|19 mai 2016 à 04:30 (CEST)19 mai 2016 à 04:30 (CEST)19 mai 2016 à 04:30 (CEST)19 mai 2016 à 04:30 (CEST)19 mai 2016 à 04:30 (CEST)19 mai 2016 à 04:30 (CEST)19 mai 2016 à 04:30 (CEST)19 mai 2016 à 04:30 (CEST)[[Utilisateur:MicP|MicP]] ([[Discussion utilisateur:MicP|discussion]]) 19 mai 2016 à 04:30 (CEST)|'
echo '|19 mai 2016 à 04:30 (CEST)19 mai 2016 à 04:30 (CEST)19 mai 2016 à 04:30 (CEST)~ ¤ BONJOUR ! ¤ 19 mai 2016 à 04:30 (CEST)19 mai 2016 à 04:30 (CEST)[[Utilisateur:MicP|MicP]] ([[Discussion utilisateur:MicP|discussion]])|'
echo '|19 mai 2016 à 04:30 (CEST) ¤ Ce Script va vous permettre ¤ 19 mai 2016 à 04:30 (CEST)~|'
echo '|19 mai 2016 à 04:30 (CEST)[[Utilisateur:MicP|MicP]] ([[Discussion utilisateur:MicP|discussion]]) 19 mai 2016 à 04:30 (CEST) ¤ de graver facilement ¤ 19 mai 2016 à 04:30 (CEST)[[Utilisateur:MicP|MicP]] ([[Discussion utilisateur:MicP|discussion]]) 19 mai 2016 à 04:30 (CEST)|'
echo '|19 mai 2016 à 04:30 (CEST)19 mai 2016 à 04:30 (CEST)[[Utilisateur:MicP|MicP]] ([[Discussion utilisateur:MicP|discussion]]) 19 mai 2016 à 04:30 (CEST) ¤ vos données ¤ 19 mai 2016 à 04:30 (CEST)19 mai 2016 à 04:30 (CEST)[[Utilisateur:MicP|MicP]] ([[Discussion utilisateur:MicP|discussion]])|'
echo '--------------------oOO----------------------+'
echo '                  |__|__|'
echo '                    || ||'
echo '                  ooO Ooo'
echo " \n \n \n "
while [ "$GRAVURE" != 0 ]; do
echo  "Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n"
echo  "1 \t Un disque de données "
#echo  "2 \t Un disque audio "
echo  "2 \t Graver une image iso "
echo  "3 \t Effacer le disque "
echo  "0 \t Quitter "
read GRAVURE
case $GRAVURE in
1 ) grave_donnees_ ;;
#2 ) grave_audio_ ;;
2 ) grave_iso_ ;;
3 ) efface_disque_ ;;
0 )
echo '
                          ''~''
                        ( o o )
+------------------.oooO--(_)--Oooo.------------------+
|                                                    |
|                      À BIENTÔT                      |
|                    .oooO                            |
|                    (  )  Oooo.                    |
+---------------------\ (----(  )--------------------+
                        \_)    ) /
                              (_/
'
exit 2
;;
* ) echo 'Veuillez entrer un choix valide' ;;
esac
done
exit 0


exit 0
</syntaxhighlight>
[[Category:Scripts]]
[[Category:Scripts]]
editor
621

modifications

Menu de navigation