Как получить имя пользователя в Java (то есть who -m в Java) (или Jython 2.1) - PullRequest
2 голосов
/ 07 апреля 2010

Вот ситуация. У меня есть сценарий jython 2.1 в общей учетной записи, который должен знать, кто его вызывает. В bash я могу просто использовать $ (who -m), и он даст мне правильное имя пользователя.

Под «общей учетной записью» я имею в виду, что я вхожу в систему как я, а затем $ (sudo su - shared_account), чтобы получить доступ к общей учетной записи.

Мне не удалось найти в java (или jython) ничего такого, что могло бы дать мне аналогичный результат. Даже попытка вызвать Runtime.getRuntime (). Exec ("who -m") ничего не делает. Когда я пытаюсь прочитать InputStream из процесса, возвращенного exec, поток становится пустым.

Ответы [ 3 ]

3 голосов
/ 07 апреля 2010

Чтобы получить владельца процесса, сделайте следующее:

System.getProperty("user.name");

Синтаксис getRunTime (). Exec () сложный.

Runtime.getRuntime().exec(new String[] {"/path/to/who", "-m"});
1 голос
/ 08 апреля 2010

Я придумала вариант, хотя я его не очень люблю:

Добавьте этот флаг к вызову Java:

-Duser.name="$(who -m | awk '{print $1}')"

И затем получить доступ к имени пользователя с помощью:

System.getProperty('user.name')
0 голосов
/ 04 февраля 2014

Вы можете просто использовать это.

System.out.println( System.getProperties().getProperty("user.name"));
...