Gravação de CDs/DVDs em dialog
Publicado por Perfil removido (última atualização em 24/09/2012)
[ Hits: 4.433 ]
Shell script para fazer cópias de cds/dvds, criar imagens ISO, gravar dados em cds e dvds e queimar imagens ISO em cds/dvds. Antes de começar a fazer qualquer tarefa, o script verifica se seu sistema tem os pré-requisitos para finalizar com sucesso qualquer tarefa a ser executada, caso não tenha, solicita que instale no sistema tais pacotes para continuar.
O script é longo, mas fiquem a vontade para alterar seu conteúdo conforme sua necessidade. Rodei sem problemas no Debian, Linux Mint, CentOS, Fedora e Ubuntu.
#!/bin/bash #*******************************************************************************# # # # Nome do script: burncd.sh # # criado por Edson de Abreu Oliveira # # ----------------------------------------------------------------------------- # # Objetivo do shell script é queimar (burn) cds e dvds, gravando nas mídias # # imagens iso, dados diversos (disco de dados), assim como também criar # # imagens iso, ou copiar cds e ou dvds. # # ----------------------------------------------------------------------------- # # O script tem várias funções. as principais são: begin, parar. # # Além de outras funções que executam tarefas especificas que pode ser # # selecionadas no inicio do script. # #*******************************************************************************# begin() { ############################################################# ############# Verifica Requisitos do sistema ################ ############################################################# if [ -e $(which dd) -a -e $(which eject) -a -e $(which wodim) -a -e $(which dialog) -a -e $(which growisofs) -a -e $(which genisoimage) ]; then dialog --infobox ' checando sistema... ' 3 30 sleep 2 else echo "checando sistema..." echo -e "# Pacotes necessários para script:{FONTE}33[31;1mgenisoimage wodim dvd+rw-tools coreutils eject dialog{FONTE}33[m,instale os pacotes para rodar sem problemas" exit 1 fi ################################################### ########### Tela de apresentação do script ####### ################################################### NU=$( dialog --stdout --title 'OPÇÕES' --menu 'Escolha a opção que será executada:' 0 0 0 \ image-iso '- CRIAR UMA IMAGEM ISO' \ data-midi '- CRIAR UMA MÍDIA DE DADOS' \ copy-midi '- COPIAR UM CD OU DVD' \ burn '- QUEIMAR IMAGEM ISO NA MÍDIA' \ sair '- Sair do script' ) [ -n "$NU" ] && OP="$NU" || OP=$(($NU + 1)) case $OP in image-iso)image-iso;; data-midi)data-midi;; copy-midi)copy-midi;; burn)burn;; sair)dialog --title "Opção escolhida" --infobox 'saindo do script' 3 20;exit 1;; 1)dialog --title "CANCELAMENTO" --infobox 'O Botão CANCELAR foi apertado ou ESC foi presionado. saindo do script' 3 60;exit 1;; *) echo "Opção Inválida!!!";iniciar;; esac } image-iso() { ############################################################# ############################################################# ############# CRIAR IMAGEM ISO ############# ############################################################# ############################################################# dialog --title "Opção" --infobox ' Você escolheu a opção criar uma imagem iso ' 3 50 sleep 2 ################################################################################################# # Pedi informações ao usuário, como pro exemplo: nome da imagem iso, local de destino da imagem # ################################################################################################# texto="Insira o nome que a imagem ISO receberá e o caminho absoluto dos dados que deseja incluir na imagem ISO (diretório ou arquivo)" ent=$(dialog --stdout \ --ok-label "OK" \ --title "Dados de entrada" \ --form "$texto" 9 70 4 \ "Nome" 1 1 "" 1 20 50 0 \ "Dados de Origem" 2 1 "" 2 20 50 0 ) nome=$(echo "$ent" |head -1) cam=$(echo "$ent" |head -2 |tail -1) ############################### # Verificação das informações # ############################### if [ -e "$cam" -a -n "$ent" -a -n "$nome" ];then sleep 1 else dialog --title "Erro" --infobox "informação insuficiente, saindo do script..." 3 50 && exit 1 fi cam1=$(dialog --stdout --ok-label "OK" --title "Escolha o local onde será armazenada a imagem ISO" --dselect "$HOME" 10 70) if [ -e "$cam1" -a -n "$cam1" ];then sleep 1 else dialog --title "Erro" --infobox "informação insuficiente, saindo do script..." 3 50 exit 1 fi ################################# # Gerando imagem iso no destino # ################################# clear genisoimage -o $cam1/$nome -JrlL -pad $cam if [ -e "$cam1/$nome" ];then dialog --title "Fim" --infobox " imagem criada com sucesso " 3 30 dialog --title "Tamanho da Imagem ISO" --infobox "Tamanho total da Imagem é:$(du -h "$cam1"/"$nome")" 3 40 else dialog --title "Erro" --infobox " imagem não foi criada ocorreu algum erro " 3 45 && exit 1 fi } data-midi() { ########################################################################### ########################################################################### ################ CRIAR MIDIA DE DADOS ########################## ########################################################################### ########################################################################### dialog --title "Opção" --infobox ' Você escolheu a opção criar mídia de Dados ' 3 55 sleep 2 ################################################################################ # CÓDIGO QUE INDICA A LOCALIZAÇÃO DOS DADOS E QUE SERÃO GRAVADOS NA MÍDIA # # E A GRAVADORA QUE CONTÉM A MÍDIA # ################################################################################ loc=$(dialog --stdout --ok-label "OK" --title "Dados a serem copiados" --dselect / 10 70) if [ -n "$loc" ];then dialog --infobox " Dados existem... " 3 25 sleep 2 midi=$(dialog --stdout --ok-label "OK" --inputbox " Deseja gravar os dados em um CD ou DVD ? " 0 0) ######################################################### # Gravar dados no DVD # ######################################################### texto1="Escolha o drive que será usado para gravar os dados na mídia" if [ "$midi" = dvd -o "$midi" = DVD -o "$midi" = Dvd ];then midia=$(dialog --stdout --title "$texto1" --ok-label "OK" --fselect /dev/ 10 80) if [ -b "$midia" ];then eject "$midia" dialog --ok-label "OK" --title "Mídia a ser cópiada" --infobox ' Coloque a mídia na bandeja e tecle ENTER ' 3 55 read ppp eject -t "$midia" sleep 20 clear growisofs -dvd-compat -speed=4 -Z "$midia" -R -J "$loc" sleep 5 && eject "$midia" rm -fr /tmp/burncd/ elif [-z "$midia" ];then dialog --title "Erro" --infobox 'você cancelou a operação' 3 35 exit 1 else dialog --title "Erro" --infobox 'Informação insuficiente...' 3 35 exit 1 fi ######################################################### # Gravar dados no CD # ######################################################### elif [ "$midi" = cd -o "$midi" = CD -o "$midi" = Cd ];then mkdir /tmp/burncd genisoimage -o /tmp/burncd/dados.iso -JrlL -pad "$loc" [ -e "/tmp/burncd/dados.iso" ]&& sleep 2 || dialog --infobox "Erro, finalizando script" 3 35 && exit 1 midia=$(dialog --stdout --title "$texto1" --ok-label "OK" --fselect /dev/ 10 80) ###################################################################### ################ Gravando imagem iso no cd ########################## ###################################################################### if [ -b "$midia" ];then eject "$midia" dialog --ok-label "OK" --title "Mídia a ser cópiada" --infobox ' Coloque a mídia na bandeja e tecle ENTER ' 3 55 read ppp eject -t "$midia" sleep 20 clear wodim -v -dev "$midia" -speed=24 -eject -multi -data /tmp/burncd/dados.iso sleep 5 && eject "$midia" rm -fr /tmp/burncd/ elif [-z "$midia" ];then dialog --title "Erro" --infobox 'você cancelou a operação' 3 35 exit 1 else dialog --title "Erro" --infobox 'Informação insuficiente...' 3 35 exit 1 fi else dialog --infobox " Opção invalida, saindo do script... " 3 45 exit 1 fi elif [ -z "$loc" ];then dialog --infobox " Operação cancelada, informação insuficiente... " 3 60 exit 1 fi } copy-midi() { ##################################################################### ##################################################################### ################ COPIAR MIDIAS ##################### ##################################################################### ##################################################################### dialog --title "Opção" --infobox ' Você escolheu a opção copiar mídia ' 3 50 sleep 2 ################################################################# # Escolhendo mídia # ################################################################# midia=$(dialog --stdout --ok-label "OK" --title "Escolha o drive que será usado para cópiar a mídia" --fselect /dev/ 10 70) if [ -b "$midia" ];then dialog --infobox ' ejetando bandeja do drive... ' 3 35 eject "$midia" sleep 2 dialog --infobox ' Coloque a mídia na bandeja e tecle ENTER ' 3 45 read ppp eject -t "$midia" sleep 20 elif [-z "$midia" ];then dialog --infobox 'você cancelou a operação' 3 35 exit 1 else dialog --infobox 'Informação insuficiente...' 3 35 exit 1 fi ######################################################################### # Fazendo copia da mídia # ######################################################################### mkdir /tmp/burncd dialog --ok-label "OK" --title "Cópia" --infobox ' Fazendo cópia da mídia ... ' 3 35 dd if="$midia" of=/tmp/burncd/dados.iso sleep 2 if [ -e /tmp/burncd/dados.iso ];then sleep 1 else dialog --title "Erro" --infobox ' Falha ao realizar a cópia ' 3 35 && exit 1 fi ################################################################################# # Gravando cópia feita na mídia # ################################################################################# midi=$(dialog --stdout --ok-label "OK" --inputbox " Deseja gravar em um CD ou DVD " 0 0) if [ "$midi" = "DVD" -o "$midi" = "dvd" -o "$midi" = "Dvd" ];then eject "$midia" dialog --infobox ' coloque a midia vazia na bandeja do drive e tecle ENTER para gravar na mídia ' 3 90 read ppd eject -t "$midia" sleep 20 clear growisofs -dvd-compat -speed=4 -Z "$midia"=/tmp/burncd/dados.iso sleep 2 eject "$midia" elif [ "$midi" = "CD" -o "$midi" = "cd" -o "$midi" = "Cd" ];then eject "$midia" dialog --infobox ' coloque a midia vazia na bandeja do drive e tecle ENTER para gravar na mídia ' 3 90 read ppd eject -t "$midia" sleep 20 clear wodim -v -dev "$midia" -speed=24 -eject -multi -data /tmp/burncd/dados.iso else dialog --ok-label "OK" --title "Fim" --infobox ' Operação Cancelada, informação insuficiente... ' 3 50 && exit 1 fi rm -fr /tmp/burncd/ } burn() { #################################################### #################################################### ############ QUEIMAR MIDIA #################### #################################################### #################################################### dialog --title "Opção" --infobox ' Você escolheu a opção queimar imagem ISO na mídia ' 3 60 sleep 2 image=$(dialog --stdout --title "Imagem" --ok-label "OK" --fselect / 10 70) if [ -e "$image" ];then dialog --infobox " imagem existe OK " 3 25 sleep 2 else dialog --infobox " imagem não existe, saindo do script ..." 3 45 && exit 1 fi medi=$(dialog --stdout --ok-label "OK" --inputbox " Deseja gravar os dados em um CD ou DVD ? " 0 0) if [ "$medi" = "dvd" -o "$medi" = "DVD" -o "$medi" = "Dvd" ];then ###################################################################### ################ Gravando imagem iso no dvd ######################## ###################################################################### midia=$(dialog --stdout --title "$texto1" --ok-label "OK" --fselect /dev/ 10 80) if [ -b "$midia" ];then eject "$midia" dialog --ok-label "OK" --title "Mídia a ser cópiada" --infobox ' Coloque a mídia na bandeja e tecle ENTER ' 3 55 read ppp eject -t "$midia" sleep 20 clear growisofs -dvd-compat -speed=4 -Z "$midia"="$image" sleep 5 && eject "$midia" elif [-z "$midia" ];then dialog --title "Erro" --infobox 'você cancelou a operação' 3 35 exit 1 else dialog --title "Erro" --infobox 'Informação insuficiente...' 3 35 exit 1 fi elif [ "$medi" = "cd" -o "$medi" =CD -o "$medi" = Cd ];then midia=$(dialog --stdout --title "$texto1" --ok-label "OK" --fselect /dev/ 10 80) ###################################################################### ################ Gravando imagem iso no cd ########################## ###################################################################### if [ -b "$midia" ];then eject "$midia" dialog --ok-label "OK" --title "Mídia a ser cópiada" --infobox ' Coloque a mídia na bandeja e tecle ENTER ' 3 55 read ppp eject -t "$midia" sleep 20 clear wodim -v -dev "$midia" -speed=24 -eject -multi -data "$image" sleep 5 && eject "$midia" elif [-z "$midia" ];then dialog --title "Erro" --infobox 'você cancelou a operação' 3 35 exit 1 else dialog --title "Erro" --infobox 'Informação insuficiente...' 3 35 exit 1 fi else dialog --infobox " Opção invalida, saindo do script... " 3 35 exit 1 fi } sair() { dialog --infobox " saindo do script " 3 25 exit 0 } parar(){ dialog --yesno " Deseja realmente parar o script ? isto pode fazer com que alguma tarefa em execução não seja concluida e ocasionar perda de dados. " 7 60 if [ "$?" = "0" ];then pkill -term wodim 2> /dev/null pkill -term dd 2> /dev/null pkill -term burncd.sh 2> /dev/null pkill -term growisofs 2> /dev/null pkill -term else dialog --infobox " script continua em execução..." 3 35 fi } case $1 in start)begin;; stop)parar;; *) echo " Digite uma parametro valido * start,stop ou restart *";; esac
Download, instalação e atualização de utilitários para Ubuntu
[Nokia-3g] Configuração do Nokia Internet Stick CS 10
Instalador do Nagios no Fedora 14 e CentOS 5
Instalador Nagios 4.2 no Fedora 24
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Melhorando a precisão de valores flutuantes em python[AJUDA] (9)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)
Vou voltar moderar conteúdos de Dicas e Artigos (3)
OpenVPN no MACBOOK conecta mas não pinga pastas de rede compartilhada ... (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta