Script crear particiones [Bash]

Iniciado por andaluz, 3 Febrero 2012, 20:56 PM

0 Miembros y 1 Visitante están viendo este tema.

andaluz

Hola a todos, quiero realizar un Script para que me haga el particionado de mi unidad de disco /dev/sdb, quiero hacer:

      - comprobar que esta vaco, en caso de que no este vacío, lo eliminare todo.
      - cuando este limpio /dev/sdb tengo que hacer 2 particiones:
              * sdb1 del 60 % sistema de archivos ext3.
              * sdb2 del 40 % sistema de archivos fat32.
      - una vez creadas las debo chequear.
      - configuración del sistema para el uso de las particiones:
              * sdb1 se montara en /media/hdext3, dolo la podrá montar root y no debe montarse al iniciar el sistema.
              * sdb2 se montara en /media/hdfat32, la podrá montar cualquier usuario, pero no permitirá ejecutar programas, se montara automáticamente al iniciar el sistema y tendrá programado un chequeo.
      - la información se deberá ir mostrando por pantalla.

Código (bash) [Seleccionar]

#!/bin/bash

num=$(ls /dev/ | grep -c '^sdb')
echo "Num: "$num

# si num es igual a 1 es que no existen particiones en la unidad /dev/sdb
if [ $num = 1 ]
then
        echo "El directorio /dev/sdb esta vacío."
else
        # si num es mayor a 1 quiere decir que tiene mas de 1 partición
        echo "Existen particiones en /dev/sdb "
fi

# me gustaría que me ayudaran a finalizarlo, ya que no esto muy puesto en esto de las particiones.
# creo que para particionar en un script se realiza:
#      parted /dev/sdb mkpart primary ext3 0G 3G


Espero que me puedan ayudar

saludos

andaluz

he confeccionado mas código del script, me gustaría que me ayudaran, ya que tiene algunos fallos en tiempo de ejecución.

Código (bash) [Seleccionar]

#!/bin/bash

n=1
# compruebo que en /dev el numero de lineas comienzan por sdb sea 1
num=$(ls /dev/ | grep -c '^sdb')
echo "Num de particiones: "$num

# si num es igual a 1 quiere decir que no existen particiones en esa unidad
if [ $num = 1 ]
then
       echo "El directorio /dev/sdb no tiene particiones"
else
       # si num es mayor a 1 quiere decir que hay mas de 1 partición
       echo "Existe mas de 1 particion en /dev/sdb"
       i=1

       # recorro desde 1 hasta el numero de particiones
       for $i in $num
       do
             # borro la particion
             rm $i
             echo "El directorio se ha limpiado de particiones"
             # aumento en 1 el valor de i
             i=$(expr $i \+ 1)
       done
fi

# creo la primera particion del 60%
parted /dev/sdb mkpart primary ext3 0G 3G
# creo la primera particion del 40%
parted /dev/sdb mkpart primary fat32 3G 5G

# chequear las particiones creadas


#   sdb1 se montara en /media/hdext3, dolo la podrá montar root y no debe
#montarse al iniciar el sistema



#  sdb2 se montara en /media/hdfat32, la podrá montar cualquier usuario, pero no
#permitirá ejecutar programas, se montara automáticamente al iniciar el sistema y
#tendrá programado un chequeo




haber si me pueden ayudar a realizar los ultimos apartados.

saludos

leogtz

El script se puede acortar muchisimo usando expansión de comandos.

A qué te refieres con "chequear las particiones creadas"?
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

andaluz

eso serial algo como chkdsk /dev/sdb$i

eso del $i estaria bien colocado asi o lo tendria que meter dentro de un for como lo he utilizado anteriormente???

leogtz

Si te funcionó el for anterior utilizalo de igual manera para checar las particiones.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

andaluz

el fallo que me da en el primer for me dice que $i no es un identificador valido, como puedo solucionar eso?? si en lugar de poner
Código (bash) [Seleccionar]

          for $i in $num

pongo
Código (bash) [Seleccionar]

          for i=1 in $num


me dice lo mismo que no es un identificador valido. que puedo hacer para solucionar esto???

Saludos