Oppure

Loading
23/10/06 14:10
posta10100
Ciao a tutti.
Sto cercando di leggere le informazioni di login dell'utente corrente.
Mi spiego meglio:
ho bisogno di visualizzare nome e cognome dell'utente che sta utilizzando l'applicazione (in locale sul proprio computer).
Ho provato con System.getProperty("user.name";) ma l'informazione non mi basta... o meglio su winzozz basterebbe anche (gli utenti si loggano con nome e cognome) ma su sistemi unix quello che leggo non è il nome reale dell'utente...

Questa informazione riesco ad ottenerla con il comando unix "finger" ma non ho molta voglia di lanciare finger, leggere l'output , estrarre il nome da tutte le info e visualizzarlo!!!

Qualcuno ha qualche idea?

Grazie 1000!!!!!
aaa
23/10/06 19:08
netarrow
ciao,

che ne dici di lanciare quasto comando?

basename `cd ~ && pwd`


ah c'è il rischio che l'utente abbia impostato una home diversa, cmq è raro.

edit:
ops scusa ho capito male, tu vuoi il nome completo, allora dovresti uhm... bhè si può provare a giocare con la bash così ti è più facile in Java, ci penso un attimo e ti risp.

prova un:

finger netarrow | head -1


a me ad esempio ritorna:

Login: netarrow Name: Matteo

poi in Java è facile tirare fuori "Matteo"

per fare tutto in un tiro:

 basename `cd ~ && pwd` | finger -l | head -1


se mi viene come eliminare tutto e fare rimanere solo il nome posterò
Ultima modifica effettuata da netarrow 23/10/06 19:28
aaa
24/10/06 9:43
posta10100
A dire la verità avrei preferito fare tutto in java... cmq il tuo suggerimento ha un piccolo problema...

Se sulla macchina sono loggati più utenti, il comando mi mostra solo il primo che trova....

Ora faccio qualche tentativo, se nel frattempo avete qualche suggerimento...

Grazie!!!!
aaa
24/10/06 10:00
posta10100
Ho trovato una soluzione... non sono ancora soddisfatto ma sembra funzionare...


try {
   Runtime rt = Runtime.getRuntime();
   String c = "finger -l " +                  System.getProperty("user.name");
   System.err.println("....." + c);
   Process p = rt.exec(c);
   BufferedReader r = new BufferedReader(new    InputStreamReader(p.getInputStream()));
   String s = r.readLine();
System.err.println(s.substring(s.lastIndexOf(":") + 1).trim());
} catch (Exception e) {}


Funziona ma se qualcuno sa fare meglio...
aaa