Advertisement
Guest User

BashBurn

a guest
Oct 8th, 2010
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.22 KB | None | 0 0
  1. #!/usr/bin/env bash
  2. # Written by kenkeiras
  3. # This program is free software. It comes without any warranty, to
  4. # the extent permitted by applicable law. You can redistribute it
  5. # and/or modify it under the terms of the Do What The Fuck You Want
  6. # To Public License, Version 2, as published by Sam Hocevar. See
  7. # http://sam.zoy.org/wtfpl/COPYING for more details.
  8.  
  9. #Parámetros por defecto (casi seguro no es necesario cambiarlos)
  10. cdpath="/dev/cdrom" # Unidad que se usará
  11. cdtrue="1,0,0"  # Unidad real de CD
  12. splitsize=900000000 # Tamaño que distinge CD's de DVD's (en Bytes)
  13. CDburnspeed=48      # Velocidad de grabación de CD < SplitSize
  14. DVDburnspeed=2      # Velocidad de grabación de DVD >= SplitSize
  15. ##################################################################
  16. str=""
  17. burnspeed=0
  18. burnOpts=""
  19.  
  20. # Primera pantalla
  21. zenity --question --title "Bash Burn" --text="Elige lo que quieres hacer" \
  22.     --ok-label="Obtener imágen de CD/DVD"   --cancel-label="Grabar CD/DVD"
  23.  
  24. i=$?
  25.  
  26. # Texto de la selección de archivos
  27. if [ $i -eq 1 ];then
  28.     str="Elige el archivo a grabar"
  29. else
  30.     str="Elige donde guardar la imágen"
  31.     # Y opciones adicionales para confirmacion al sobreescribir
  32.     moreopt="--save --confirm-overwrite"
  33. fi
  34.  
  35. # Selección de archivo
  36. f=$(zenity --file-selection --title="$str" $moreopt)
  37.  
  38. # Si no se selecciono un archivo
  39. if [ $f"" == "" ];then
  40.     zenity --info --text="No has seleccionado un archivo, saliendo..."\
  41.         --title="Bash Burn"
  42.     exit 0
  43. fi
  44.  
  45. # Se comprueba el tipo de archivo si se está grabando
  46. if [ $i -eq 1 ]; then
  47.     sz=`wc -c "$f"|cut -d\  -f1`
  48.     if [ $sz"" -lt $splitsize"" ];then
  49.         burnspeed=$CDburnspeed
  50.         str=CD
  51.     else
  52.         burnspeed=$DVDburnspeed
  53.         str=DVD
  54.     fi
  55.     s=`file "$f"`
  56.     echo $s|grep -i "iso 9660" >> /dev/null
  57.     if [ $? -eq 0 ]; then
  58.         # Es una ISO
  59.         burnOpts="dev=$cdtrue -tao -data -eject speed=$burnspeed $f"
  60.     else
  61.         zenity --info --title "Bash Burn" \
  62.             --text="Tipo de archivo no soportado, saliendo..."
  63.         exit 1
  64.     fi
  65. fi
  66.  
  67. # Última oportunidad para cambiar de idea
  68. if ! zenity --question --title "Bash Burn" \
  69.     --text="Es la última oportunidad para parar el proceso, desea continuar?"
  70.     then
  71.         exit 0
  72. fi
  73.  
  74. # Aquí hay algo a tener en cuenta para las progressbar...
  75. # dd no utiliza stdout por defecto, sino stderr, asi que
  76. # hay que redireccionarlo, de ahi el    2>&1   ;)
  77.  
  78. # Además, para que la barra empieze a moverse tiene que recibir
  79. # datos por stdin, de ahi el (echo i;cat), que manda los datos y
  80. # no se cierra hasta que acabe el proceso original
  81.  
  82. # Se crea la ISO
  83. if [ $i -eq 0 ]; then
  84.     # Se limpia por si acaso
  85.     rm -f "$f"
  86.  
  87.     # Se lee el CD
  88.     dd if="$cdpath" of="$f" 2>&1|(echo i;cat)|zenity --progress --pulsate\
  89.       --title "Bash Burn [copiando]" --text="Copiando a $f" --auto-close \
  90.       --auto-kill
  91. else
  92.     sudo cdrecord $burnOpts|(echo i;cat)|zenity --progress --pulsate\
  93.       --title "Bash Burn [grabando]" --text="Grabando $f a $str" --auto-close\
  94.       --auto-kill
  95. fi
  96.  
  97. notify-send "Bash Burn" "Operación finalizada"
  98. zenity --info --title "Bash Burn [Finalizado]" --text "Finalizado, comprueba el disco por si acaso"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement