12 Último

Script en bash

      • 516
      • mensajes
      • miembro desde
      • 24/02/05
    16/12/2005
    #1 Script en bash

    Hola gente!!
    Bueno el tema es el siguiente tengo que hacer un script en bash.
    Lo que tengo que hacer es hacer un backup del home de cada usuario que no sea administrador, bueno la parte esa esta lista, despues tengo que hacer que el usuario comun pueda ver sus copias de seguridad, y poder recuperar todo o parte de esa copia y ese es mi problema no se me ocurre como hacerlo. aca esta el codigo que hace la el empaquetado y la comprecion.

    #!/bin/bash

    #toma la fecha y hora del sistema

    fecha=`date +%F-%H.%M`

    #pasa el archivo /etc/passwd al archivo temp.txt

    cat /etc/passwd > temp.txt

    while read L ; do

    #toma el nombre del usuario

    usu=`echo "$L" | cut -d: -f1`

    #toma el UID del usuario

    uid=`echo "$L" | cut -d: -f3`

    #toma el directorio home del usuario

    home=`echo "$L" | cut -d: -f6`

    #comprueba el UID del usuario si es mayor de 500 y menor de 65000

    if [ "$uid" -ge 500 ] && [ "$uid" -lt 65000 ] ; then



    #empaqueta el home del usuario

    tar -cvf /practica/backup_"$usu"_"$uid"_"$fecha".tar "$home"

    #comprimir el el backup ya esta echo este es un codigo incompleto que hice

    fi

    done < temp.txt

    #borra el archivo temp.txt

    rm -f temp.txt


    Nota: este script esta incompleto y puede tener fallas pero es basicamente el script que tengo funcionando. Desde ya gracias al que me pueda dar una mano.
  1. ¿Este tema te pareció interesante? Compártelo!

    ¿No es lo que buscabas? Intenta buscar un tema similar

    10 comentarios / 10583 Visitas

      • 2,110
      • mensajes
      • miembro desde
      • 22/01/05
    16/12/2005
    #2 Re: Script en bash

    y por qué no le cambias el dueño con chown al backup para ese usuario ???

      • 516
      • mensajes
      • miembro desde
      • 24/02/05
    16/12/2005
    #3 Re: Script en bash

    la idea es hacer el script con un menu y que el usuario comun pueda ver los backups de el y pida la recuperacion de ese backup (total o parcial)

      • 2,110
      • mensajes
      • miembro desde
      • 22/01/05
    16/12/2005
    #4 Re: Script en bash

    Vos por cada archivo estás guardando el nombre del usuario no ?? bueno, toma de la variable de entorno del usuario que ejecuta el programa ( USER ) el nombre actual y entonces mostra solamente los archivos que concuerden con ese patrón ( porque sabés que es de ese usuario ), o lo podrías hacer por uid, pero bue... así le mostras solamente esos archivos.
    Cuando elige hacer un backup simplemente se lo desempaquetas.
    Podrías hacer al programa suid para que lo pueda ejecutar cualquiera, o en un directorio con el bit sticky cuando haces el backup al archivo de cada usuario le haces un chown para que después ese usuario pueda manejarlo a su gusto desde la herramienta de backup sin necesidad de hacerla root suid.
    El tema de hacer un backup parcial podrías refinarlo después, pero podrías usar la opción -t ( creo que es esa ) para pedir una lista de archivos que hay en el tar, y que el usuario elija cual desempaquetar.

    O sea... un cortito ejemplo para la lista... una pabada:

    Código:
    for i in `ls *.tar | grep ${USER}`; do
    	# hacer algo, como escribir el menú :)
    done;
      • 516
      • mensajes
      • miembro desde
      • 24/02/05
    16/12/2005
    #5 Re: Script en bash

    en tonces decis que baya tomando el nombre del backup y lo baya almacenando en un archivo y despues tome solo los backup que concuerden con el usuario que los pidio?? entendi bien lo que me dijistes o no???

      • 2,110
      • mensajes
      • miembro desde
      • 22/01/05
    16/12/2005
    #6 Re: Script en bash

    No digo que lo almacenes en un archivo porque podés filtrar perfectamente un ls, pero básicamente eso es lo que digo, que tomés los backups solamente del usuario que los pidió.
    Si querés hacerlo con un archivo podrías guardar en el directorio de los backups un archivo de texto plano por cada usuario que contenga el nombre de todos los backups que puede manejar, un archivo por ej. llamado no se... usuario.txt y que tenga contenidos como el siguiente

    backup_usuario_1000_algunafecha.tar
    backup_usuario_1000_algunafecha.tar
    backup_usuario_1000_algunafecha.tar
    backup_usuario_1000_algunafecha.tar
    backup_usuario_1000_algunafecha.tar

    entonces podrías tomar el menú directamente de ese archivo... se entiende ?? pero si, lo que digo es que solamente le muestres los backups que concuerden con el usuario que los pidió.

      • 516
      • mensajes
      • miembro desde
      • 24/02/05
    16/12/2005
    #7 Re: Script en bash

    ok!! lo voy a probar! despues te cuento si me salio y ya que estamos te muestro como quedo haber si se puede mejorar!!

      • 2,110
      • mensajes
      • miembro desde
      • 22/01/05
    18/12/2005
    #8 Re: Script en bash

    OK dale

      • 83
      • mensajes
      • miembro desde
      • 27/12/04
    05/02/2006
    #9 Re: Script en bash

    yo lo que haria, aparte, es una estructura case ... podira ser asi:

    case $1 in
    backup)echo "Nombre de usuario" && read USER
    echo "Haciendo backup del home del usuario $USER ..."
    (tu codigo)
    ;;
    restaurar) echo "Nombre de usuario" && read USER
    echo "Restaurando backup del usuario ..."
    (tu codigo)
    ;;
    esac


    vale aclarar que $1 es el PIRMER argumento que se toma desde el prompt de bash despues del nombre del script. Podrias hacer el backup asi
    manuuu@annabelle:~$./backup.sh backup

    espero sirva este pequeño hint
    by!
    Manu

      • 2,110
      • mensajes
      • miembro desde
      • 22/01/05
    06/02/2006
    #10 Re: Script en bash
    Cita Escrito por manuuu
    backup)echo "Nombre de usuario" && read USER
    echo "Haciendo backup del home del usuario $USER ..."
    ...
    restaurar) echo "Nombre de usuario" && read USER
    De hecho no hace falta leer la variable USER de la entrada estándar ya que la variable USER está ya está definidia como variable de entorno, y contiene el nombre del usuario que ejecuta el programa.
12 Último