|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2004
Messaggi: 435
|
[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! ![]() 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?! Ultima modifica di petitof : 17-01-2007 alle 13:53. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2004
Messaggi: 435
|
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?!! ![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 365
|
cat e read
![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2004
Messaggi: 435
|
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?? ![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 365
|
allora direi che una letta a questo indirizzo http://www.pluto.it/files/ildp/guide/abs/index.html può esserti molto utile
![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Apr 2004
Messaggi: 435
|
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!! |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Ecco un esempio:
Codice:
... 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" fi
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Apr 2004
Messaggi: 435
|
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... ![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Apr 2004
Messaggi: 435
|
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!!!! |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Nella funzione dovresti fare un echo della password e poi chiamare la funzione con: PASS=`GetPassword $1` (Nota i back-quote)
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Apr 2004
Messaggi: 435
|
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 ![]() |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
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. ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Apr 2004
Messaggi: 435
|
Grazie!
In effetti...corro subito a levare il return!!!! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:48.