Aiuto per uno script

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
nuovopinguino
Linux 2.x
Linux 2.x
Messaggi: 208
Iscritto il: mer 14 gen 2004, 0:00
Località: Trento

Aiuto per uno script

Messaggio da nuovopinguino »

Ho creato uno script shell con l'intento di associare ad ogni utente una password generata a random di 8 caratteri e il risultato che voglio ottenere è un output del tipo

Utente1 Password1
Utente2 Password2
Utente3 Password3
Utente4 Password4

però non ci riesco ed ottengo una cosa del tipo:

Utente1 Password1
Utente2 Password1
Utente3 Password1
Utente4 Password1

praticamente la password è uguale per ogni utente! Non capisco dove sbaglio! Qualcuno di voi mi sa aiutare?
Probabilmente l'errore sta nel ciclo for ma non capisco dove... :-(
Grazie mille...

Codice: Seleziona tutto

#!/bin/bash
for utente in Utente1 Utente2 Utente3 Utente4
do
	# Genero una Password per ogni utente
	MATRICE="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
 	LUNGHEZZA="8"
 	while [ "${n:=1}" -le "$LUNGHEZZA" ]
 	do
 		PASS="$PASS${MATRICE:$(($RANDOM%${#MATRICE})):1}"
 		let n+=1
	done
	# Mando a video l'accoppiata NomeUtente Password
	echo "$utente" "$PASS"
done 
exit 0
Grazie molte a chiunque possa aiutarmi

Avatar utente
francogdn
Linux 2.x
Linux 2.x
Messaggi: 320
Iscritto il: ven 19 mag 2006, 10:52
Distribuzione: Fedora
Località: Torino

Messaggio da francogdn »

Devi azzerare il contatore... se no al secondo giro non entra nella while:

Codice: Seleziona tutto

#!/bin/bash
for utente in Utente1 Utente2 Utente3 Utente4
do
   # Genero una Password per ogni utente
   MATRICE="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
   LUNGHEZZA="8"
   while [ "${n:=1}" -le "$LUNGHEZZA" ]
   do
       PASS="$PASS${MATRICE:$(($RANDOM%${#MATRICE})):1}"
       let n+=1
   done
   n=0
   # Mando a video l'accoppiata NomeUtente Password
   echo "$utente" "$PASS"
   PASS=""
done
exit 0
Ciao.

nuovopinguino
Linux 2.x
Linux 2.x
Messaggi: 208
Iscritto il: mer 14 gen 2004, 0:00
Località: Trento

Messaggio da nuovopinguino »

Cavoli è vero!
Grazie di cuore! Mi sono bloccato su sta cosa e non riuscivo a venirne fuori!
Grazie mille per l'aiuto!
Sei un MITO!!!
GRAZIE

PS: Anche la variabile PASS ho visto che deve essere azzerata dopo la visualizzazione del nome utente e password altrimenti concatena le varie password!
Ultima modifica di nuovopinguino il gio 28 set 2006, 12:04, modificato 1 volta in totale.

Avatar utente
francogdn
Linux 2.x
Linux 2.x
Messaggi: 320
Iscritto il: ven 19 mag 2006, 10:52
Distribuzione: Fedora
Località: Torino

Messaggio da francogdn »

Prego, figurati :)

Avatar utente
dapuzz
Linux 4.x
Linux 4.x
Messaggi: 1137
Iscritto il: mar 16 mag 2006, 11:09
Contatta:

Messaggio da dapuzz »

Edit: Loool sono arrivato in ritardo :D

Avatar utente
francogdn
Linux 2.x
Linux 2.x
Messaggi: 320
Iscritto il: ven 19 mag 2006, 10:52
Distribuzione: Fedora
Località: Torino

Messaggio da francogdn »

Esatto, anche la variabile PASS va azzerata.

Ciao.

Rispondi