logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 11-06-2010 15:16:32

Thuban
aka prx
Distrib. : OpenBSD
Noyau : current
(G)UI : cwm
Inscription : 09-01-2009
Site Web

Un script pour graver en ligne de commande

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

Hors ligne

#2 11-06-2010 17:13:26

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : Un script pour graver en ligne de commande

Avant de le tester, je le mets dans la section programmation, il me semble bien cohabiter avec les scripts qui y sont déjà présents, non ?

Merci de ce travail Thuban ! big_smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#3 11-06-2010 17:17:29

Thuban
aka prx
Distrib. : OpenBSD
Noyau : current
(G)UI : cwm
Inscription : 09-01-2009
Site Web

Re : Un script pour graver en ligne de commande

Pas de soucis pour la section smile

Hors ligne

#4 30-12-2010 13:42:46

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010

Re : Un script pour graver en ligne de commande

Yep!

Merci Thuban pour cette contribution. J'aurais préferé un script pythonesque et je pense m'y atteler lorsque je serais moins débordé...(c'est pas pour demain!)

D'ailleurs, je constate que le script évolue chez nos amis de debian-fr : http://www.debian-fr.org/graver-en-lign … 42-25.html

Je suis avec interêt ce topic wink

Le seul hic à mon goût est l'impossibilité de choisir le graveur de déstination. Mon portable a subi quelques dommages et j'utilise depuis un graveur externe usb. Il n'est pas difficile de modifier en conséquence le script, mais nous n'avons pas tous un graveur nommé scd0.

Voili Voilou.

@+

Zoroastre.

Hors ligne

#5 30-12-2010 13:45:38

Thuban
aka prx
Distrib. : OpenBSD
Noyau : current
(G)UI : cwm
Inscription : 09-01-2009
Site Web

Re : Un script pour graver en ligne de commande

C'est exact, ce défaut fait partie des choses à changer dans le script. Je l'ai mis sur le wiki de debian-fr afin que chacun puisse l'améliorer, étant donné que je n'ai pas suffisamment de temps ni les compétences nécéssaires.

Hors ligne

#6 18-12-2011 12:49:22

alisou
Membre
Lieu : Québec, Canada
Distrib. : Squeeze
Noyau : 2.6.32-5-amd64
(G)UI : Gnome + Openbox
Inscription : 27-11-2011

Re : Un script pour graver en ligne de commande

Allo,
En passant il existe une application qui le fait très bien, à savoir Bashburn
Il n'est pas dans les dépôts mais disponible depuis le site de l'auteur.
http://bashburn.dose.se/

;-)

Hors ligne

Pied de page des forums