unix无法捕获JAVA中“who m”命令的输出
我想获取telnet会话的登录用户的IP地址
因此,我编写了以下代码:
Process p1 = Runtime.getRuntime().exec(new String[] {"/usr/bin/who", "-m"});
p1.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p1.getInputStream()));
String line = reader.readLine();
System.out.println("line=" + line);
reader.close();
但是我得到的输出是“null”
其中,预期输出为: 莱纳斯pts/1 Dec 10 03:48(172.21.235.48)
# 1 楼答案
您可以创建一个shell脚本,该脚本将从java程序接收参数(选项)。 然后您可以从java运行shell脚本,如下所示-
现在正在测试中。sh,你抓取参数并运行命令-
希望这有帮助
# 2 楼答案
谢谢你们的回复
从“dystroy”的回答中,我了解到-m正在制造问题
我尝试了--m,结果成功了:)
# 3 楼答案
在调用
waitFor()
之前,尝试使用进程中的输入流# 4 楼答案
请尝试此代码。它为我工作,并返回与
who -m
UNIX命令相同的输出# 5 楼答案
在这种情况下,您不应该传递
-m
选项这对我很有用: