View Full Version : [Bash] Script che legge utenti e password da un file...
Ciao a tutti!
Volevo chiedervi se avevate qualche indicazione in merito a quello che starei cercando di fare!
Ho già fatto dei tentativi però volevo chiedervi la via più corretta da seguire!
Grazie in anticipo!
:D
Esemio:
#!/bin/bash
GetPassword()
{
filename=/opt/oracle/admin/user.conf
utente=$1
echo $utente
if [ "$utente" = "$line" ]
then
password=
fi
return password
}
password=GetPassword $1
Come faccio a leggere da un file esterno e restituire il parametro?!
Volevo chiedervi se avevate qualche indicazione in merito a quello che starei cercando di fare!Cioè cosa di preciso??
Ciao!
Grazie per l'aiuto..spero di ricambiare in futuro!!
Avrei un file di testo che contiene per ogni riga:
utente1/password1
utente2/password2
.
.
.
utenten/passwordn
Ogni linea termina con un "a capo"....che comando utilizzo all'interno della mia funzione per poter leggere questo file di testo e verificare se l'utenza è quella che ho dato in input?!! :rolleyes:
E' su queste due cose che sono bloccato:
1) non conosco la sintassi del ciclo for che legga riga per riga dall'inizio alla fine del file!
2) non so come prendere la password da una variabile=utenza/password, esiste la possibilità di avere la posizione da cui partire sapende che la password parte da "/" fino alla fine della linea??
:muro:
allora direi che una letta a questo indirizzo http://www.pluto.it/files/ildp/guide/abs/index.html può esserti molto utile :)
Intanto grazie ai motori di ricerca ho modificato il mio script in:
#!/bin/bash
GetPassword()
{
filename=/opt/oracle/admin/user.conf
utente=$1
echo $utente
for linea in `cat $filename`
do
if [ $utente = $linea ]
then
password=$linea
fi
done
return password
}
password=GetPassword $1
Ma non va chiaramente perchè non so nemmeno come restituire un parametro!!!! ....non so niente!!!!
Ora leggo il link che mi hai consigliato...grazie!!
Ecco un esempio:
...
cat filepwd.txt | { while read LINEA
do
set $LINEA
if [ "$UTENTE" = "$1" -a "$PASSWORD" = "$2" ]; then
exit 0
fi
done
exit 1; }
if [ $? = 0 ]; then
echo "Utente/Password corretti"
else
echo "Utente/Password sbagliati"
fiAll'inizio ci devono essere 2 variabili $UTENTE e $PASSWORD, ovviamente con i dati da verificare.
Ora è:
#!/bin/bash
GetPassword()
{
filename=/opt/oracle/admin/user.conf
utente=$1
echo $utente
for linea in `cat $filename`
do
if [ $utente = $linea ]
then
password=$linea
fi
done
return $password
}
GetPassword $1
password=$?
echo $password
Solo che in input dò l'utenza ed avrei l'esigenza che mi restituisse la password!
il mio problema è che script che lavorano per oracle e spesso mi capita di dover cambiare una password e di impazzire a modificarli tutti, quindi volevo centralizzare il tutto in un file di conf e utilizzare la funzione per prendermi la mia info...
:stordita:
Punto 1 smarcato!!!!!!
Per la restituzione delle stringhe o array ho bisogno di una variabile dedicata!!! (dalla guida che mi hai segnalato..)
#!/bin/bash
GetPassword()
{
filename=/opt/oracle/admin/user.conf
utente=$1
echo $utente
for linea in `cat $filename`
do
if [ $utente = $linea ]
then
PASSWORD=$linea
fi
done
return $password
}
GetPassword $1
echo $PASSWORD
Ora mi manca il punto 2, perchè al momento mi restituisce tutta la riga!!!!
Solo che in input dò l'utenza ed avrei l'esigenza che mi restituisse la password!
il mio problema è che script che lavorano per oracle e spesso mi capita di dover cambiare una password e di impazzire a modificarli tutti, quindi volevo centralizzare il tutto in un file di conf e utilizzare la funzione per prendermi la mia info...Da una funzione (o processo) puoi solo far ritornare un valore numerico, non stringhe di testo o altro.
Nella funzione dovresti fare un echo della password e poi chiamare la funzione con:
PASS=`GetPassword $1`
(Nota i back-quote)
Grazie cmq ti posto la mia funzionante!!!
#!/bin/bash
# INIZIO
# FUNZIONE CHE RESTITUISCE COME STRINGA LA PASSWORD
GetPassword()
{
filename=/opt/oracle/admin/user.conf
utente=$1
#echo " e fin qua=:"$utente
for linea in `cat $filename`
do
utentefile=${linea:0:${#utente}}
#echo " utente nel file="$utentefile
if [ $utente = $utentefile ]
then
PASSWORD=${linea:${#utente}+1}
fi
done
return $password
}
GetPassword $1
password=$PASSWORD
#FINE
echo $password
:D
Le variabili, nella bash, sono condivise tra il chiamante e la funzione chiamata ... a meno che la variabile venga dichiarata con il builtin local all'interno della funzione (per cui avrebbe uno scope locale). ;)
Quindi la tua $password non è definita da alcuna parte, la return non serve e stai semplicemente passando la variabile $PASSWORD tra la funzione e il chiamante. :D
Grazie!
In effetti...corro subito a levare il return!!!!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.