Advertisement
Frannoe

Format-USB

Sep 16th, 2012
801
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 8.57 KB | None | 0 0
  1. #!/bin/bash
  2. #--------------------------------------
  3. # Script(Gui)para formatear dispositivos USB.
  4. # El funcionamiento es muy simple: Detecta y muestra el último dispositivo conectado para su posterior formateo
  5. # Tienes más información aquí: http://lmde-frannoe.blogspot.com.es/
  6. # Esta es una herramienta gratuíta y libre que pretende facilitar el formateo de pendrive o tarjetas
  7. # El autor no se responsabiliza de las perdidas de datos que se puedan derivar por el uso de esta utilidad.
  8. #--------------------------------------
  9. declare -a DRIVINFO[6]
  10.  
  11. if [ $(id -u) = "0" ]
  12.  then
  13.     echo "root"
  14. else
  15.         zenity --info --title "No tiene previlegios administrativos" --text="Debe ejecutar este Script cómo administrador.\nEjemplos.\nDesde un Lanzador:\n<b>gksu /</b>'ruta'<b>/format-USB</b>\nDesde un Terminal:\n<b>sudo ./</b>'ruta'<b>/format-USB</b>" --no-wrap
  16. exit
  17. fi
  18.  
  19. function formatear
  20. {
  21.      
  22. arch=$( mktemp --tmpdir=/dev/shm zenity-XXXXXXXXXX )
  23.  
  24. exec 7>${arch}
  25.  
  26. tail -f ${arch} | zenity --width "300" --title "Formateando en $4..." --text "Dándole formato al dispositivo...: <b>$media</b>\nEtiqueta: <b>$etq</b>\nTenga en cuenta que el formato puede tardar un tiempo.\nEspere por favor, no cierre esta ventana." --progress --pulsate --no-cancel --auto-close &
  27. sleep 1s
  28. echo >&7
  29.  
  30. case "$1" in
  31. FAT16-e)
  32. mkfs.vfat -F16 -n $2 $3
  33. ;;
  34. FAT16)
  35. mkfs.vfat -F16 $3
  36. ;;
  37. FAT32-e)
  38. mkfs.vfat -F32 -n $2 $3
  39. ;;
  40. FAT32)
  41. mkfs.vfat -F32 $3
  42. ;;
  43. EXT3-e)
  44. mkfs.ext3 -L $2 $3
  45. ;;
  46. EXT3)
  47. mkfs.ext3 $3
  48. ;;
  49.  
  50. EXT4-e)
  51. mkfs.ext4 -L $2 $3
  52. ;;
  53. EXT4)
  54. mkfs.ext4  $3
  55. ;;
  56. esac
  57. echo 100 >&7
  58. exec 7>&-
  59. rm ${arch}
  60.  
  61. }
  62. etiqueta=0
  63. media=$(df | tail -n1 | awk '{ print $1 }')
  64.  
  65. as=$(df -hT $media)
  66.   if [ $? -ne 0 ]
  67.            then
  68. zenity --info --title="Dispositivo..." --text="Dispositivo no encontrado.\nEsta utilidad detecta el último dispositivo conectado.\nAsegúrese de que éste sea el último dispositivo que\nconectó y que esté montado.\nSi es así, si ya está montado, extráigalo, vuélvalo a conectar,\nluego móntelo si no lo hace éste de forma automática." --no-wrap
  69.     exit
  70.       fi
  71. as2=$(df -m $media)
  72. tam=$(echo $as2 | awk '{print $9}')
  73. mediausb=$(ls -l /dev/disk/by-id/usb*)
  74. usb=${media:5}
  75.   if echo "$mediausb" | grep -q $usb
  76.  then
  77.          echo
  78.  else
  79.          zenity --info --title="Dispositivo USB...?" --text="El dispositivo encontrado no parece estar\nen la lista de dispositivos USB.\nSe saldrá de este programa." --no-wrap
  80. exit
  81.  fi
  82. #Tamaño máximo permitido 32GB (32780)
  83. mg=32780
  84. if [ $tam -gt $mg ]
  85.    then
  86. zenity --info --title="Dispositivo de capacidad superior" --text="El dispositivo detectado es de '<b>`expr $tam / 1024`GB</b>' capacidad superior al\nĺímite establecido de'<b>`expr $mg / 1024`GB</b>'.\nAsegurese de que el último dispositivo conectado sea un USB.\nSi es así, si el USB es superior a esa capacidad, tendrá que\naumentar ese valor en la variable '<b>mg</b>' del Script para que\npueda ser formateado por este programa." --no-wrap
  87.     exit
  88.    fi
  89.  
  90. if cmp -s "/dev/sr"* "$media"
  91.    then
  92. zenity --info --title="Dispositivo..." --text="El dispositivo encontrado parece ser un dispositivo optico.\nEsta utilidad detecta el último dispositivo conectado.\nAsegúrese de que el USB sea el último dispositivo que\nconectó y que esté montado.\nSi es así, si ya está montado, extráigalo, vuélvalo a conectar,\nluego móntelo si no lo hace éste de forma automática." --no-wrap
  93.     exit
  94.   fi
  95.  
  96. for info in "9" "10" "11" "12" "13" "14" "15"
  97. do
  98. selecc=$(echo $as | awk '{print $'$info'}')
  99. DRIVINFO[$info]=$selecc
  100. if [ $selecc = "vfat" ]
  101. then
  102. DRIVINFO[$info]="FAT"
  103. elif [ $selecc = "fuseblk" ]
  104. then
  105. DRIVINFO[$info]="NTFS"
  106. fi
  107. done
  108.  
  109.  
  110. if (zenity --title="Dispositivo" --text "Datos sobre el dispositivo detectado: " --height "150" --width "650" --list --column="USB Montado en:" --column="Dispositivo" --column="Formato" --column="Tamaño" --column="Usado" --column="Disponible" --column="Usado %" \
  111. ${DRIVINFO[15]} \
  112. ${DRIVINFO[9]} \
  113. ${DRIVINFO[10]} \
  114. ${DRIVINFO[11]} \
  115. ${DRIVINFO[12]} \
  116. ${DRIVINFO[13]} \
  117. ${DRIVINFO[14]} )
  118. then
  119.  
  120. while [ -z $formato ]
  121.          do
  122. if formato=$(zenity --list --title="Formatos..." --text "Seleccione el tipo de formato" --height "250" --width "200" --radiolist --column "#" --column "Acción" FALSE "FAT16" FALSE "FAT32" FALSE "NTFS" FALSE "NTFS-lento" FALSE "EXT3" FALSE "EXT4")
  123.      then
  124. echo
  125.       else
  126. zenity --info --title "Cancelado" --text="Cancelado.\nNo se formateará ningun dispositivo.\nSe saldrá de este programa." --no-wrap
  127.      exit
  128.      fi
  129.        done
  130.  
  131. while [ -z $etq ]
  132.       do
  133. if etq=$(zenity --title "Etiquetado" --entry --text "Ahora puede introducir si quiere un nombre (etiqueta)\npara el dispositivo.\n\nMuy importante:\nNo puede utilizar espacios u otros caracteres especiales.\nPuede introducir letras o números indistintamente.\nPuede utilizar también los caracteres guión y guión bajo.\nSi pulsa 'Cancelar', se añadirá una Etiqueta 'Standar'.")
  134. then
  135.      etiqueta=1
  136.  
  137.       else
  138. etq="Standar"
  139.         break
  140.       fi
  141.       done
  142.  
  143. umount -l $media
  144.  
  145. case "$formato" in
  146.  
  147. FAT16)
  148. if [ $etiqueta -eq 1 ]
  149.   then
  150.  
  151.     formatear "FAT16-e" $etq $media "FAT16"
  152.   else
  153.     formatear "FAT16" "" $media "FAT16"
  154. fi
  155.  ;;
  156. FAT32)
  157. if [ $etiqueta -eq 1 ]
  158.   then
  159.  
  160.     formatear "FAT32-e" $etq $media "FAT32"
  161.   else
  162.     formatear "FAT32" "" $media "FAT32"
  163. fi
  164. ;;
  165. NTFS)
  166. if [ $etiqueta -eq 1 ]
  167.   then
  168.     mkfs.ntfs -Q -L $etq $media | zenity --width "350" --title "Formateando en NTFS..." --text "Dándole formato al dispositivo...: <b>$media</b>\nEtiqueta: <b>$etq</b>\nTenga en cuenta que esto puede tardar un tiempo.\nEspere por favor, no cierre esta ventana." --progress --pulsate --no-cancel --auto-close
  169.  
  170.   else
  171.     mkfs.ntfs -Q $media | zenity --width "350" --title "Formateando en NTFS..." --text "Dándole formato al dispositivo...: <b>$media</b>\nEtiqueta: <b>$etq</b>\nTenga en cuenta que esto puede tardar un tiempo.\nEspere por favor, no cierre esta ventana." --progress --pulsate --no-cancel --auto-close
  172. fi
  173. ;;
  174. NTFS-lento)
  175. if [ $etiqueta -eq 1 ]
  176.   then
  177.     mkfs.ntfs -L $etq $media | zenity --width "350" --title "Formateando en NTFS..." --text "Dándole formato al dispositivo...: <b>$media</b>\nEtiqueta: <b>$etq</b>\nTenga en cuenta que el formato 'Lento' puede tardar\nbastante tiempo.\nEspere por favor, no cierre esta ventana." --progress --pulsate --no-cancel --auto-close
  178.   else
  179.     mkfs.ntfs $media | zenity --width "350" --title "Formateando en NTFS..." --text "Dándole formato al dispositivo...: <b>$media</b>\nEtiqueta: <b>$etq</b>\nTenga en cuenta que el formato 'Lento' puede tardar\nbastante tiempo.\nEspere por favor, no cierre esta ventana." --progress --pulsate --no-cancel --auto-close
  180. fi
  181. ;;
  182. EXT3)
  183.  if [ $etiqueta -eq 1 ]
  184.   then
  185.     formatear "EXT3-e" $etq $media "EXT3"
  186.  
  187.      # mkfs.ext3 -L $etq $media | tee >(zenity --width "300" --title "Formateando en EXT3..." --text "Dándole formato al dispositivo...: <b>$media</b>\nEtiqueta: <b>$etq</b>\nTenga en cuenta que el formato puede tardar un tiempo.\nEspere por favor, no cierre esta ventana." --progress --pulsate --no-cancel --auto-close)>/dev/null
  188.   else
  189.     formatear "EXT3" "" $media "EXT3"
  190.  
  191.     #mkfs.ext3 $media | tee >(zenity --width "300" --title "Formateando en EXT3..." --text "Dándole formato al dispositivo...: <b>$media</b>\nEtiqueta: <b>$etq</b>\nTenga en cuenta que el formato puede tardar un tiempo.\nEspere por favor, no cierre esta ventana." --progress --pulsate --no-cancel --auto-close)>/dev/null
  192. fi
  193. ;;
  194.  
  195. EXT4)
  196.  if [ $etiqueta -eq 1 ]
  197.   then
  198.     formatear "EXT4-e" $etq $media "EXT4"
  199.  
  200.      #mkfs.ext4 -L $etq $media | tee >(zenity --width "300" --title "Formateando en EXT4..." --text "El dispositivo se está formateando. Espere por favor, \nesto puede tardar un tiempo. No cierre esta ventana." --progress --pulsate --no-cancel --auto-close)>/dev/null
  201.  
  202.  
  203.   else
  204.    formatear "EXT4" "" $media "EXT4"
  205.  
  206.     #mkfs.ext4 $media | tee >(zenity --width "300" --title "Formateando en EXT4..." --text "El dispositivo se está formateando. Espere por favor, \nesto puede tardar un tiempo. No cierre esta ventana." --progress --pulsate --no-cancel --auto-close)>/dev/null
  207.  
  208. fi
  209. ;;
  210. esac
  211.  
  212.         else
  213.       zenity --info --title "Cancelado" --text="Cancelado.\nNo se formateará ningún dispositivo.\nSe saldrá de este programa." --no-wrap
  214.         exit
  215.       fi
  216.  
  217. if [ $? -eq 0 ]
  218.  then
  219.  
  220. zenity --info --text="Formato finalizado con éxito "
  221.  
  222. exit
  223.   else
  224. zenity --info --title "Error" --text="Ha ocurrido un error inesperado.\nLa aplicación se cerrará." --no-wrap
  225.       exit
  226. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement