【发布时间】:2014-06-29 14:31:14
【问题描述】:
我不知道这是 Java 还是 Ubuntu 的问题,所以我会在这里发布。
由于一个错误,我在 startx 下工作了几天,从终端启动 Eclipse。在一个程序中,我正在使用 Runtime 类安装一个外部驱动器
String[] command = {"gksu", "mount", "/dev/sdb1", "mounter/sdb"};
Runtime.getRuntime().exec(command);
每次都提示我输入密码。所以我写了这个
String pwd = "mypassword";
System.setIn(new ByteArrayInputStream(pwd.getBytes()));
并且命令执行良好,无需输入密码(也适用于sudo -S)
但现在我又开始研究 lightdm 了,但这不起作用。使用gksu 时,它每次都会提示我输入密码,而sudo -S 什么也不做。
String input;
while((input=new BufferedReader(new InputStreamReader(System.in)).readLine()) != null) {
System.out.println(input);
}
此命令实际上在控制台中显示了我的密码,但我仍然无法让程序不要求我输入密码。
除其他标准外,该应用程序的目标是速度快,而这个密码问题很烦人。如果你们有任何建议,我将不胜感激。
问候
【问题讨论】:
-
srsly...您正在尝试解决您不应该遇到的问题。如果您真的需要将您的密码硬编码到您的应用程序中,那么您做错了什么。如果您真的想在不输入密码的情况下安装这些东西,请配置您的系统,这样您的程序也不需要输入密码。 (您的密码后也缺少换行符 - 这可能是由于最小的示例,但不知道)
-
如果您根据启动 X 的方式得到不同的行为,那么我建议您在两种模式下从提示符运行 'env' 并比较有什么不同。我怀疑从 lightdm 运行时在您的会话中设置了一些东西(能力?)从 startx 运行时没有设置