【问题标题】:Reading password from stdin in lightdm在 lightdm 中从标准输入读取密码
【发布时间】: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 运行时没有设置

标签: java ubuntu stdin


【解决方案1】:

我想使用密码,把它放在一个属性文件中,这样程序就可以很容易地在计算机之间传输。无法让它与换行符一起使用,所以我修改了 mount 和 umount 不要求输入密码,然后我将不得不在手动文件中解释如何。

【讨论】:

    猜你喜欢
    • 2010-12-18
    • 2012-04-25
    • 2013-03-30
    • 2012-02-17
    • 2022-06-25
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    相关资源
    最近更新 更多