Pular para o conteúdo

Shell script para duplicação de CD's

Este script duplica CD's de áudio e dados.

Ótimo para duplicar CD's com setores de boot, tais como CD's de jogos e S.O

É necessário o pacote 'cdrtools' e o 'dialog'.
Sandro Marcell SMarcell
Hits: 5.267 Categoria: Shell Script Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Este script duplica CD's de áudio e dados.

Ótimo para duplicar CD's com setores de boot, tais como CD's de jogos e S.O

É necessário o pacote 'cdrtools' e o 'dialog'.
Download dushell.sh Enviar nova versão

Esconder código-fonte

#!/bin/sh 

## DuShell.sh - Shell script para duplicação de CD's
## Escrito por: Sandro Marcell P. Barbosa (Boa Vista - Roraima)
## E-mail: sandro_marcell@yahoo.com.br
## Slackware GNU/Linux 10.1

# Este script duplica CD's de áudio e dados.
# É utilizada a interface 'dialog'.
# É necessário o pacote 'cdrtools'.
# Verifique as permissões do dispositivo de gravação.
# Se necessário, altere as variavéis de configuração.

# Variavéis de configuração.
GRAVADORA=/dev/cdrom        # Localização do dispositivo de gravação
VELOC_GRAV=48           # Velocidade de gravação
DIR_TRAB=/tmp/dushell-$USER  # Diretório temporário de trabalho

# Caso o usuário 'mate' o processo:
trap 'rm -rf $DIR_TRAB 2> /dev/null ; exit' 0 1 2 3 15

# Função que remove o diretório de trabalho:
Apagar () { rm -rf $DIR_TRAB 2> /dev/null ; }

# Declarando funções de 'dialog':
Dialog_duplicando () {   
      dialog --colors --backtitle "\Zb$TÍTULO" \
      --infobox "\Z5Duplicando... Aguarde!\Zn" 3 30
   }
   
Dialog_troca () {   
      dialog --colors --backtitle "\Zb$TÍTULO"      \
      --title "Cópia concluída"            \
      --msgbox "\Zb\Z7Insira um CD 'virgem' no drive para\
      continuar ou tecle <ESC> para cancelar.\Zn" 6 50      
   }

Dialog_problema () {   
      dialog --colors --backtitle "\Zb$TÍTULO" \
      --title "OCORREU O SEGUINTE PROBLEMA:"   \
      --textbox $DIR_TRAB/$$ 0 0
      }
      
Dialog_gravando () {   
      dialog --colors --backtitle "\Zb$TÍTULO" \
      --infobox "\Zb\Z3Gravando... Aguarde!\Zn" 3 30
   }

Dialog_sucesso () {   
      dialog --colors --backtitle "\Zb$TÍTULO" \
      --msgbox "CD duplicado com sucesso!" 5 30
   }

# Montando a caixa de 'dialog' principal para o usuário:
TÍTULO=$(echo "DuShell.sh - Shell script para duplicação de CD's")

OPÇÃO=$(dialog --stdout --colors --backtitle "\Zb$TÍTULO"           \
   --title "O QUE VOCÊ DESEJA DUPLICAR?"                   \
   --radiolist "\Z1Use as setas direcionais do teclado para navegar\
   pelas opções e tecle <SPACEBAR> para marcar.\Zn" 0 0 0           \
   "Dados"       "Duplicar um CD de dados." ON              \
   "Áudio"       "Duplicar um CD de áudio." OFF              )

# Início da instrução 'case', que checa qual opção o usuário escolheu:       
   case $OPÇÃO in

      Dados) # Duplicando CD's de dados. 

      # Criando caso não exista, o diretório de trabalho:
      if [ ! -d $DIR_TRAB ]; then
         mkdir $DIR_TRAB
      fi

      # Chamando a função 'Dialog_duplicando':
      Dialog_duplicando

      # Iniciando processo de duplicação do CD de dados:
      if ! readcd dev=$GRAVADORA f=$DIR_TRAB/$$.raw \
         speed=$VELOC_GRAV -clone -noerror retries=1 \
         1> /dev/null 2> $DIR_TRAB/$$; then

      # Se houver problemas, a função 'Dialog_problema' é chamada:
      Dialog_problema         
         Apagar
         exit
      fi

      eject $GRAVADORA 2> /dev/null # Ejetando após duplicar!

      # Chamando a função 'Dialog_troca':
      Dialog_troca
      
      # Caso o usuário tecle 'ESC':
      if [ $? -eq 255 ]; then
         dialog --colors --backtitle "\Zb$TÍTULO" \
         --infobox "\Zb\Z1Duplicação de CD cancelada!\Zn" 3 35
         Apagar
         exit
      fi
      
      # Chamando a função 'Dialog_gravando':
      Dialog_gravando

      # 1... 2... 3... Gravando!: 
      if ! cdrecord gracetime=2 dev=$GRAVADORA speed=$VELOC_GRAV \
         -raw96r driveropts=burnfree -clone -force -eject \
         $DIR_TRAB/$$.raw 1> /dev/null 2> $DIR_TRAB/$$; then

      # Se houver problemas, a função 'Dialog_problema' é chamada:
      Dialog_problema
         Apagar
         exit
      fi

      # Se a duplicação ocorreu sem problemas,
      # a função 'Dialog_sucesso' é chamada:
      Dialog_sucesso
      Apagar
      exit
      ;;
      
      #----------------------------------------------#
      
      Áudio) # Duplicando CD's de áudio.
      
      if [ ! -d $DIR_TRAB ]; then
         mkdir $DIR_TRAB
      fi

      Dialog_duplicando

      # Início do processo de duplicação do CD de áudio:
      cd $DIR_TRAB
      if ! cdda2wav dev=$GRAVADORA -x -v all -L 0 \
         -B -O raw -S $VELOC_GRAV \
         1> /dev/null 2> $$; then

      Dialog_problema         
         Apagar
         exit
      fi
      
      eject $GRAVADORA 2> /dev/null
      
      Dialog_troca
      
      if [ $? -eq 255 ]; then
         dialog --colors --backtitle "\Zb$TÍTULO" \
         --infobox "\Zb\Z1Duplicação de CD cancelada!\Zn" 3 35
         Apagar
         exit
      fi
      
      Dialog_gravando

      # Gravando CD de áudio:
      if ! cdrecord gracetime=2 dev=$GRAVADORA speed=$VELOC_GRAV \
         -raw96r driveropts=burnfree -eject -useinfo -text \
         -audio -shorttrack *.raw 1> /dev/null 2> $$; then 

      Dialog_problema         
         Apagar
         exit
      fi

      Dialog_sucesso
      Apagar
      exit
      ;;

      *) exit ;; 
      
   esac
exit

Desmontar e Ejetar CD/DVD

Controle de usuários - Samba

Alterar o endereço MAC de uma interface de rede

Auto-montador de partições

Firewall básico

#1 Comentário enviado por SMarcell em 06/07/2008 - 15:38h
Caraca! Eu nem me lembrava mais deste script!!! Fazia tanto tempo que havia posto ele na fila de espera aqui do VOL (coisa de +/- um ano atrás).

P.S. Esse script não está funcionando 100%.

Algum dia irei concertá-lo!

;)
#2 Comentário enviado por pintofree em 07/07/2008 - 09:35h
E ai amigo, antes tarde do que nunca né
mais nao desiste nao concerta ele ai.

Contribuir com comentário

Entre na sua conta para comentar.