当通过ProcessBuilder运行命令行命令(特别是"GetMac / s")时,如果它抛出错误或正常返回并且我可以读取其返回的错误或MAC地址,但如果它提示用户输入(某些计算机在使用getmac时需要密码),则该进程将挂起等待密码。
以下是从命令行运行该命令的操作:
以下是我用于该进程的代码:
我需要Mac电脑来制作远程唤醒程序,希望能自动获取任何新PC的MAC地址,以便用户无需手动输入。如果您知道更好的方法来获取远程PC的MAC地址,请告诉我,我会使用该方法。
我知道Java可能不是用于此的最佳语言,但它是我目前唯一掌握的语言,而且这只是我工作闲暇时间里的一个有趣小项目。
**编辑:如果需要密码,我只想忽略该PC并终止进程,转而继续下一个PC。
以下是从命令行运行该命令的操作:
![enter image description here](https://istack.dev59.com/FMCQq.webp)
package testing;
import java.io.IOException;
class test1 {
public static void main(String[] args){
String hostName = "testpc";
ProcessBuilder builder = new ProcessBuilder("getmac", "/s", hostName, "/nh");
builder.inheritIO();
try {
Process proc = builder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我需要Mac电脑来制作远程唤醒程序,希望能自动获取任何新PC的MAC地址,以便用户无需手动输入。如果您知道更好的方法来获取远程PC的MAC地址,请告诉我,我会使用该方法。
我知道Java可能不是用于此的最佳语言,但它是我目前唯一掌握的语言,而且这只是我工作闲暇时间里的一个有趣小项目。
**编辑:如果需要密码,我只想忽略该PC并终止进程,转而继续下一个PC。
builder.inheritIO();
这一行,但结果变得混乱了。如果你保留它,流捕获就无法正常工作。把它去掉,然后吞下你的流。 - Hovercraft Full Of Eels