dificare. Dopo aver verificato che l’utente esista, lo script chiede di modificare: password, nome del gruppo di appartenenza, user info, home relativa all’utente
e shell da utilizzare: NON si chiede di modificare username e UID. Il nuovo gruppo di appartenenza dell’utente deve esistere, altrimenti lo scriptsegnala l’errore a video e non procede con la modifica.
il file con gli utenti è:
Aragon:ilritornodelre:12il legittimo re:/home/aragon:/bin/bash
Gimmly:777888999:66:800:bla bla:/home/gimmly:/bin/bash
Legolas:odioinani:99:42:biondo arco:/home/legolas:/bin/bash
Frodo:pass111:23il portatore:/home/frodo:/bin/bash
Gollum:19191919:200:67:il mio tessssoro:/home/Gollum:/bin/bash
Sauron:unanelloperdomarli:10:20:the boss of the montefato:/home/Sauron/:/bin/bash
Aragon 2:aragonpass:13:32:the secret account of Aragon:/home/private/aragonhide/:/bin/hidebash
il file con i gruppi è:
Moria Miniere:800
Admin:32
Aragon Team:320
Elfo lungo:42
Stregone:73
l'occhio:20
Compagnia:1000
mangio pesce:67
Urukai:13
Lo script che ho fatto è il seguente: (all'inizio ho messo i commenti dei punti dello script che non mi vanno)
#!/bin/bash
#Problemi riscontrati:
# 1) Se metto un nome utente non valido il programma continua e mi dice utente trovato.es:
#Inserisci utente da modificare:
#Leo
#Ricerca dell utente da modificare...
#Riga utente trovata:
#Utente trovato.
#Inserisci nuovo password:
#2) nel mio file passwd ho gli utenti Aragon e Aragon 2, il programma me li cerca entrambi e invece dovrebbe estrarne solo uno. es:
#Inserisci utente da modificare:
#Aragon
#Ricerca dell utente da modificare...
#Aragon
#Aragon 2
#Riga utente trovata: Aragon:ilritornodelre:12il legittimo re:/home/aragon:/bin/bash
#Aragon 2:aragonpass:13:32:the secret account of Aragon:/home/private/aragonhide/:/bin/hidebash
#Utente trovato.
#Inserisci nuovo password:
#3) Quando inserisco il campo del commento e scrivo una frase (oppure inserisco Aragon 2 nella ricerca dell'utente), lo script mi dice che si aspetterebbe solo un parametro. es1:
#Inserisci utente da modificare:
#Aragon 2
#provaawk.sh: riga 73: [: Aragon: atteso operatore unario
#Ricerca dell utente da modificare...
#es2:
#Inserisci nuovo password:
#0000
#Inserisci nuovo gruppo di appartenenza:
#800
#Inserisci nuova USER INFO:
#verme mollo
#provaawk.sh: riga 95: [: verme: atteso operatore unario
#4)Sembra che mi dia dei problemi quando nel campo del commento del mio file originale ho due o piu parole.Oppure i valori $1(riga utente), $2(nuova riga utente) e $3(file passwd) nella funzione modifica_linea non sono letti correttamente
#S es:
#Inserisci utente da modificare:
#Gimmly
#Ricerca dell utente da modificare...
#Gimmly
#Riga utente trovata: Gimmly:777888999:66:800:bla bla:/home/gimmly:/bin/bash
#Utente trovato.
#Inserisci nuovo password:
#0000
#Inserisci nuovo gruppo di appartenenza:
#1000
#Inserisci nuova USER INFO:
#Prova
#Inserisci nuova HOME utente:
#/newGimmly
#ciao 1000
#1000
#1000
#Gruppo trovato.
#Modifica dei campi richiesti
#nuova riga Gimmly:0000:66Prova:/newJabba:/bin/bash
#Il file Gimmly:0000:66Prova:/newGimmly:/bin/bash non esiste! Non è stato possibile sostituire Gimmly:777888999:66:800:bla con bla:/home/gimmly:/bin/bash
Codice: Seleziona tutto
POS_UTENTE=1
POS_PSW=2
POS_UID=3
POS_GROUP_ID=4
POS_UID_INFO=5
POS_HOME=6
POS_CMD=7
#FILE DA UTILIZZARE simile a /etc/passwd
FILE_PASSWD=passwd2.txt
#UTENTE_TROVATO
function modifica_linea {
if [ -f $3 ]; then
echo "File:$3 - Sostituzione: $1 -> $2 "
sed -i -- "s|$1|$2|g" $3
else
echo "Il file $3 non esiste! Non è stato possibile sostituire $1 con $2"
fi
}
function cerca_utente {
cat $FILE_PASSWD | awk -F ":" {'print $'$POS_UTENTE''} | grep -w "$1"
RIGA_UTENTE=$(grep "$1:" $FILE_PASSWD)
echo "Riga utente trovata: $RIGA_UTENTE"
return $?
}
function cerca_gruppo {
echo "ciao $1"
GRUPPO_UTENTE=$(cat $FILE_PASSWD | awk -F ":" {'print $'$POS_GROUP_ID''} | grep -w "$1" | head -n1)
echo $GRUPPO_UTENTE
if [ $GRUPPO_UTENTE ]; then
echo $GRUPPO_UTENTE
return 0;
else
return 1;
fi
}
echo "Inserisci utente da modificare:"
#lettura utente
read UTENTE
if [ ! $UTENTE ];then echo "Non puoi lasciare vuoto questo campo"; exit 1;fi
#ricerca utente
echo "Ricerca dell utente da modificare..."
cerca_utente $UTENTE
RISULTATO=$?
#risultato ricerca
if [ $RISULTATO -eq 0 ]; then
echo "Utente trovato."
else
echo "Utente non trovato"
exit 1;
fi
echo "Inserisci nuovo password:"
read PASSWORD
if [ ! $PASSWORD ];then echo "Non puoi lasciare vuoto questo campo"; exit 1;fi
echo "Inserisci nuovo gruppo di appartenenza:"
read GRUPPO
if [ ! $GRUPPO ];then echo "Non puoi lasciare vuoto questo campo"; exit 1;fi
echo "Inserisci nuova USER INFO:"
read UID_INFO
if [ ! $UID_INFO ];then echo "Non puoi lasciare vuoto questo campo"; exit 1;fi
echo "Inserisci nuova HOME utente:"
read HOME
if [ ! $HOME ];then echo "Non puoi lasciare vuoto questo campo"; exit 1;fi
cerca_gruppo $GRUPPO
RISULTATO=$?
#risultato ricerca
if [ $RISULTATO -eq 0 ]; then
echo "Gruppo trovato."
echo "Modifica dei campi richiesti"
MUID=$(echo $RIGA_UTENTE | awk -F ":" {'print $'$POS_UID''})
CMD=$(echo $RIGA_UTENTE | awk -F ":" {'print $'$POS_CMD''})
echo "nuova riga $UTENTE:$PASSWORD:$MUID:$GRUPPO:$UID_INFO:$HOME:$CMD"
modifica_linea $RIGA_UTENTE "$UTENTE:$PASSWORD:$MUID:$GRUPPO:$UID_INFO:$HOME:$CMD" $FILE_PASSWD
else
echo "Gruppo non trovato, non sarà effettuata nessuna modifica"
exit 1;
fi