copias de seguridad para todos los usuarios del sistema con determinado uid

Iniciado por Berlo, 19 Junio 2017, 05:01 AM

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

Berlo

Hola muy buenas, estoy intentando hacer un script de copias de seguridad para todos los usuarios del sistema con determinado uid pero en el bucle for se repite siempre la misma copia de seguridad de un usuario no pasa al siguiente en el array a ver si me podeis ayudar



Código (bash) [Seleccionar]
#! /bin/bash

if [ $# -ne 2 ] || [ $1 != "-r" ] && [ $1 != "-c" ] || [ `expr index $2 \/` -ne 1 ] ; then

       echo "Los parametros admitidos son los siguientes: ";
       echo "Primer parametro debe ser -c (crea copia de seguridad) o -r (restaura copia de seguridad)";
       echo "Segundo parametro debe ser direccionamiento absoluto al lugar donde realizar la accion";  
       exit;

fi

if [ $1 == "-c" ]; then

cont=0;
echo "busco los que son mayores de uid=1000";
for i in $(cut -d: -f 1 /etc/passwd); do
       if [ `id -u $i` -gt 999 ] ; then
               usuario[$cont]=$i;
               cont=$((cont+1));
       fi
done

rm /tmp/copiac

conta=0;
echo "busco los usuarios en el fichero shadow";
while [ $conta -lt ${#usuario[@]} ] ; do
       grep ${usuario[$conta]} /etc/shadow >> /tmp/copiac;
       conta=$((conta+1));
done

cont=0;
unset usuario;
echo "elimino los que no tienen contraseña";
for i in $(sed -e '/:\*:/d' /tmp/copiac | cut -d : -f 1); do
       usuario[$cont]=$i;
       cont=$((cont+1));
done

echo ${usuario[@]};

for i in ${usuario[@]}; do
echo $i
       if [ -d $(grep ${usuario[$i]} /etc/passwd | cut -d : -f 6) ] ; then
               ruta=$(grep ${usuario[$i]} /etc/passwd | cut -d : -f 6);
               echo $ruta ;
               cd $ruta ;
               pwd ;
               tar -czvf $2/${usuario[$i]}.tgz ./;
       fi
done


echo "creando el fichero usuarios";

for i in ${usuario[@]} ; do
       echo ${usuario[$i]}:$(grep ${usuario[$i]} /etc/passwd | cut -d : -f 5):$(grep ${usuario[$i]} /etc/shadow | cut -d : -f 2):$(grep ${usuario[$i]} /etc/passwd | cut -d : -f 6):$(grep ${usuario[$i]} /etc/passwd | cut -d : -f 7) >> $2/usuarios ;
       echo " creado " ;
done



fi

if [ $1 == "-r" ]; then
       ./copiar $2;
fi



· Los códigos deben ir en etiquetas GeSHi
· Los títulos deben ser descriptivos
>aquí las reglas del foro
-Engel Lex