Domanda

C'è un modo per ottenere UID dell'utente su una macchina Linux con Java? Sono consapevole di metodo System.getProperty("user.name");, ma il ritorno di nome utente e sto cercando UID.

È stato utile?

Soluzione

è possibile eseguire il comando id lettura del risultato.

Ad esempio:

$ id -u jigar

uscita:

1000

è possibile eseguire il comando da

try {
    String userName = System.getProperty("user.name");
    String command = "id -u "+userName;
    Process child = Runtime.getRuntime().exec(command);

    // Get the input stream and read from it
    InputStream in = child.getInputStream();
    int c;
    while ((c = in.read()) != -1) {
        process((char)c);
    }
    in.close();
} catch (IOException e) {
}

fonte

Altri suggerimenti

Se si riesce a influenzare il modo in Java VM è avviato, si potrebbe passaggio di consegne il uid come una proprietà utente:

java -Duserid=$(id -u) CoolApp

Nel vostro coolapp, si può semplicemente prendere l'ID con:

System.getProperty("userid");

Saluti,

Martin.

Basta aprire il file /etc/passwd e cercare la linea che ha un utente pari a System.getProperty("user.name").

Un'altra scelta sarebbe chiamando getuid () utilizzando JNI.

V'è in realtà un'API per questo. Non c'è bisogno di chiamare un comando di shell o utilizzare JNI, solo

def uid = new com.sun.security.auth.module.UnixSystem().getUid()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top