Advertisement
Frannoe

Format-USB

Sep 16th, 2012
761
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. # By Frannoe@gmail.com
  6. # Tienes más información aquí: http://lmde-frannoe.blogspot.com.es/
  7. # Esta es una herramienta gratuíta y libre que pretende facilitar el formateo de pendrive o tarjetas
  8. # El autor no se responsabiliza de las perdidas de datos que se puedan derivar por el uso de esta utilidad.
  9. #--------------------------------------
  10. declare -a DRIVINFO[6]
  11.  
  12. if [ $(id -u) = "0" ]
  13.  then
  14.     echo "root"
  15. else
  16.         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
  17. exit
  18. fi
  19.  
  20. function formatear
  21. {
  22.      
  23. arch=$( mktemp --tmpdir=/dev/shm zenity-XXXXXXXXXX )
  24.  
  25. exec 7>${arch}
  26.  
  27. 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 &
  28. sleep 1s
  29. echo >&7
  30.  
  31. case "$1" in
  32. FAT16-e)
  33. mkfs.vfat -F16 -n $2 $3
  34. ;;
  35. FAT16)
  36. mkfs.vfat -F16 $3
  37. ;;
  38. FAT32-e)
  39. mkfs.vfat -F32 -n $2 $3
  40. ;;
  41. FAT32)
  42. mkfs.vfat -F32 $3
  43. ;;
  44. EXT3-e)
  45. mkfs.ext3 -L $2 $3
  46. ;;
  47. EXT3)
  48. mkfs.ext3 $3
  49. ;;
  50.  
  51. EXT4-e)
  52. mkfs.ext4 -L $2 $3
  53. ;;
  54. EXT4)
  55. mkfs.ext4  $3
  56. ;;
  57. esac
  58. echo 100 >&7
  59. exec 7>&-
  60. rm ${arch}
  61.  
  62. }
  63. etiqueta=0
  64. media=$(df | tail -n1 | awk '{ print $1 }')
  65.  
  66. as=$(df -hT $media)
  67.   if [ $? -ne 0 ]
  68.            then
  69. 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
  70.     exit
  71.       fi
  72. as2=$(df -m $media)
  73. tam=$(echo $as2 | awk '{print $9}')
  74. mediausb=$(ls -l /dev/disk/by-id/usb*)
  75. usb=${media:5}
  76.   if echo "$mediausb" | grep -q $usb
  77.  then
  78.          echo
  79.  else
  80.          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
  81. exit
  82.  fi
  83. #Tamaño máximo permitido 32GB (32780)
  84. mg=32780
  85. if [ $tam -gt $mg ]
  86.    then
  87. 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
  88.     exit
  89.    fi
  90.  
  91. if cmp -s "/dev/sr"* "$media"
  92.    then
  93. 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
  94.     exit
  95.   fi
  96.  
  97. for info in "9" "10" "11" "12" "13" "14" "15"
  98. do
  99. selecc=$(echo $as | awk '{print $'$info'}')
  100. DRIVINFO[$info]=$selecc
  101. if [ $selecc = "vfat" ]
  102. then
  103. DRIVINFO[$info]="FAT"
  104. elif [ $selecc = "fuseblk" ]
  105. then
  106. DRIVINFO[$info]="NTFS"
  107. fi
  108. done
  109.  
  110.  
  111. 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 %" \
  112. ${DRIVINFO[15]} \
  113. ${DRIVINFO[9]} \
  114. ${DRIVINFO[10]} \
  115. ${DRIVINFO[11]} \
  116. ${DRIVINFO[12]} \
  117. ${DRIVINFO[13]} \
  118. ${DRIVINFO[14]} )
  119. then
  120.  
  121. while [ -z $formato ]
  122.          do
  123. 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")
  124.      then
  125. echo
  126.       else
  127. zenity --info --title "Cancelado" --text="Cancelado.\nNo se formateará ningun dispositivo.\nSe saldrá de este programa." --no-wrap
  128.      exit
  129.      fi
  130.        done
  131.  
  132. while [ -z $etq ]
  133.       do
  134. 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'.")
  135. then
  136.      etiqueta=1
  137.  
  138.       else
  139. etq="Standar"
  140.         break
  141.       fi
  142.       done
  143.  
  144. umount -l $media
  145.  
  146. case "$formato" in
  147.  
  148. FAT16)
  149. if [ $etiqueta -eq 1 ]
  150.   then
  151.  
  152.     formatear "FAT16-e" $etq $media "FAT16"
  153.   else
  154.     formatear "FAT16" "" $media "FAT16"
  155. fi
  156.  ;;
  157. FAT32)
  158. if [ $etiqueta -eq 1 ]
  159.   then
  160.  
  161.     formatear "FAT32-e" $etq $media "FAT32"
  162.   else
  163.     formatear "FAT32" "" $media "FAT32"
  164. fi
  165. ;;
  166. NTFS)
  167. if [ $etiqueta -eq 1 ]
  168.   then
  169.     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
  170.  
  171.   else
  172.     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
  173. fi
  174. ;;
  175. NTFS-lento)
  176. if [ $etiqueta -eq 1 ]
  177.   then
  178.     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
  179.   else
  180.     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
  181. fi
  182. ;;
  183. EXT3)
  184.  if [ $etiqueta -eq 1 ]
  185.   then
  186.     formatear "EXT3-e" $etq $media "EXT3"
  187.  
  188.      # 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
  189.   else
  190.     formatear "EXT3" "" $media "EXT3"
  191.  
  192.     #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
  193. fi
  194. ;;
  195.  
  196. EXT4)
  197.  if [ $etiqueta -eq 1 ]
  198.   then
  199.     formatear "EXT4-e" $etq $media "EXT4"
  200.  
  201.      #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
  202.  
  203.  
  204.   else
  205.    formatear "EXT4" "" $media "EXT4"
  206.  
  207.     #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
  208.  
  209. fi
  210. ;;
  211. esac
  212.  
  213.         else
  214.       zenity --info --title "Cancelado" --text="Cancelado.\nNo se formateará ningún dispositivo.\nSe saldrá de este programa." --no-wrap
  215.         exit
  216.       fi
  217.  
  218. if [ $? -eq 0 ]
  219.  then
  220.  
  221. zenity --info --text="Formato finalizado con éxito "
  222.  
  223. exit
  224.   else
  225. zenity --info --title "Error" --text="Ha ocurrido un error inesperado.\nLa aplicación se cerrará." --no-wrap
  226.       exit
  227. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement