PDA

Visualizza la versione completa : Script bash per modifiche a home utente


dvoran
13-06-2012, 15:14
Salve,
mi servirebbe uno script in bash che da root acceda a tutte le cartelle utente ed esegua delle operazioni al loro interno.
L'autenticazione al sistema è tramite LDAP, non so se dipenda da questo ma in /etc/passwd non sono presenti gli utenti del sistema.

Non so se mi sono spiegato chiaramente, ma ad esempio se ho gli utenti pippo, pluto e paperino, devo scrivere dei file nelle directory /home/pippo, /home/pluto e /home/paperino
Tutto qui :confused:

nifriz
15-06-2012, 11:29
Ma senza passare dal file dell'elenco utenti, non puoi accedere alla directory /home,
fare un "LS" delle directory e ciclare su quell'elenco? Sarebbe più semplice...

In ogni caso /etc/passwd non è più affidabile mi sa, se non erro (NEL CASO CORREGGETEMI) alcune Distro, come UBUNTU non utilizzano più questo files...

dvoran
15-06-2012, 11:38
Alla fine ho risolto con



command='ls -d /home/*'
for i in $($command); do
if [[ "$i" = "/home/mms" || "$i" = "/home/tomcat" || "$i" = "/home/lost+found" ]]; then
echo ""
else if [[ -d $i ]]; then
sudo cp * $i/.icewm/
user=${i:6} # per estrarre il nome utente
sudo chown $user:users /home/$user/.icewm/*
fi
fi


Il primo if serve per non far copiare i file in cartelle a cui non serve, non sarà una soluzione pulitissima ma funziona correttamente

Mutato
18-06-2012, 19:41
Un modo piu` pulito per ottenere l'elenco degli utenti e`



awk -F: '($3 > 999){print $1}' < /etc/passwd | grep -v nobody


quindi puoi



for user in $(awk -F: '($3 > 999){print $1}' < /etc/passwd | grep -v nobody); do
if [ -d "/home/$user" ]; then

sudo cp * /home/$user/.icewm/
sudo chown $user:users /home/$user/.icewm/*

fi
done


:98:

Loading