Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #--------------------------------------
- # Script(Gui)para formatear dispositivos USB.
- # El funcionamiento es muy simple: Detecta y muestra el último dispositivo conectado para su posterior formateo
- # By Frannoe@gmail.com
- # Tienes más información aquí: http://lmde-frannoe.blogspot.com.es/
- # Esta es una herramienta gratuíta y libre que pretende facilitar el formateo de pendrive o tarjetas
- # El autor no se responsabiliza de las perdidas de datos que se puedan derivar por el uso de esta utilidad.
- #--------------------------------------
- declare -a DRIVINFO[6]
- if [ $(id -u) = "0" ]
- then
- echo "root"
- else
- 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
- exit
- fi
- function formatear
- {
- arch=$( mktemp --tmpdir=/dev/shm zenity-XXXXXXXXXX )
- exec 7>${arch}
- 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 &
- sleep 1s
- echo >&7
- case "$1" in
- FAT16-e)
- mkfs.vfat -F16 -n $2 $3
- ;;
- FAT16)
- mkfs.vfat -F16 $3
- ;;
- FAT32-e)
- mkfs.vfat -F32 -n $2 $3
- ;;
- FAT32)
- mkfs.vfat -F32 $3
- ;;
- EXT3-e)
- mkfs.ext3 -L $2 $3
- ;;
- EXT3)
- mkfs.ext3 $3
- ;;
- EXT4-e)
- mkfs.ext4 -L $2 $3
- ;;
- EXT4)
- mkfs.ext4 $3
- ;;
- esac
- echo 100 >&7
- exec 7>&-
- rm ${arch}
- }
- etiqueta=0
- media=$(df | tail -n1 | awk '{ print $1 }')
- as=$(df -hT $media)
- if [ $? -ne 0 ]
- then
- 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
- exit
- fi
- as2=$(df -m $media)
- tam=$(echo $as2 | awk '{print $9}')
- mediausb=$(ls -l /dev/disk/by-id/usb*)
- usb=${media:5}
- if echo "$mediausb" | grep -q $usb
- then
- echo
- else
- 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
- exit
- fi
- #Tamaño máximo permitido 32GB (32780)
- mg=32780
- if [ $tam -gt $mg ]
- then
- 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
- exit
- fi
- if cmp -s "/dev/sr"* "$media"
- then
- 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
- exit
- fi
- for info in "9" "10" "11" "12" "13" "14" "15"
- do
- selecc=$(echo $as | awk '{print $'$info'}')
- DRIVINFO[$info]=$selecc
- if [ $selecc = "vfat" ]
- then
- DRIVINFO[$info]="FAT"
- elif [ $selecc = "fuseblk" ]
- then
- DRIVINFO[$info]="NTFS"
- fi
- done
- 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 %" \
- ${DRIVINFO[15]} \
- ${DRIVINFO[9]} \
- ${DRIVINFO[10]} \
- ${DRIVINFO[11]} \
- ${DRIVINFO[12]} \
- ${DRIVINFO[13]} \
- ${DRIVINFO[14]} )
- then
- while [ -z $formato ]
- do
- 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")
- then
- echo
- else
- zenity --info --title "Cancelado" --text="Cancelado.\nNo se formateará ningun dispositivo.\nSe saldrá de este programa." --no-wrap
- exit
- fi
- done
- while [ -z $etq ]
- do
- 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'.")
- then
- etiqueta=1
- else
- etq="Standar"
- break
- fi
- done
- umount -l $media
- case "$formato" in
- FAT16)
- if [ $etiqueta -eq 1 ]
- then
- formatear "FAT16-e" $etq $media "FAT16"
- else
- formatear "FAT16" "" $media "FAT16"
- fi
- ;;
- FAT32)
- if [ $etiqueta -eq 1 ]
- then
- formatear "FAT32-e" $etq $media "FAT32"
- else
- formatear "FAT32" "" $media "FAT32"
- fi
- ;;
- NTFS)
- if [ $etiqueta -eq 1 ]
- then
- 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
- else
- 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
- fi
- ;;
- NTFS-lento)
- if [ $etiqueta -eq 1 ]
- then
- 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
- else
- 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
- fi
- ;;
- EXT3)
- if [ $etiqueta -eq 1 ]
- then
- formatear "EXT3-e" $etq $media "EXT3"
- # 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
- else
- formatear "EXT3" "" $media "EXT3"
- #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
- fi
- ;;
- EXT4)
- if [ $etiqueta -eq 1 ]
- then
- formatear "EXT4-e" $etq $media "EXT4"
- #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
- else
- formatear "EXT4" "" $media "EXT4"
- #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
- fi
- ;;
- esac
- else
- zenity --info --title "Cancelado" --text="Cancelado.\nNo se formateará ningún dispositivo.\nSe saldrá de este programa." --no-wrap
- exit
- fi
- if [ $? -eq 0 ]
- then
- zenity --info --text="Formato finalizado con éxito "
- exit
- else
- zenity --info --title "Error" --text="Ha ocurrido un error inesperado.\nLa aplicación se cerrará." --no-wrap
- exit
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement