如何获取Java中的用户名(即,Java中的-m)(或Jython 2.1)

时间:2010-04-07 19:41:37

标签: java jython

这是情况。我在共享帐户中有一个jython 2.1脚本,需要知道谁在调用它。在bash中,我可以简单地使用$(who -m),它会给我正确的用户名。

通过“共享帐户”,我的意思是我以自己的身份登录,然后使用$(sudo su - shared_account)来访问共享帐户。

我无法在java(或jython)中找到任何会给我类似结果的东西。即使试图调用Runtime.getRuntime()。exec(“who -m”)也不会做任何事情。当我尝试从exec返回的进程中读取InputStream时,该流为空。

3 个答案:

答案 0 :(得分:3)

要让流程所有者执行此操作:

System.getProperty("user.name");

getRunTime()。exec()的语法很棘手。

Runtime.getRuntime().exec(new String[] {"/path/to/who", "-m"});

答案 1 :(得分:1)

我想出了一个选项,尽管我并不喜欢它:

将此标志添加到java调用:

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

然后使用以下命令访问用户名

System.getProperty('user.name')

答案 2 :(得分:0)

你可以使用它。

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