【问题标题】:Unexpected output found while executing sudo command执行 sudo 命令时发现意外输出
【发布时间】:2013-08-11 09:30:24
【问题描述】:

当我在终端中执行以下命令时,它会按预期执行,即显示当前文件夹内容。

echo <password> | sudo -u root -S ls

但是如果我在我的 java 应用程序中执行相同的命令,它的输出是:

<password> | sudo -u root -S ls

我该如何克服这个问题?

【问题讨论】:

  • java 不使用 shell 执行进程,而您正在使用 shell 元字符 '|'。 SO和网络上已经有很多答案指定了如何做到这一点。
  • 您是否尝试过执行sh -c "echo sanovi | sudo -u root -S ls"
  • @FabianHenze 我尝试了你的建议。但没有成功。还有其他建议吗?

标签: java linux sudo


【解决方案1】:

当你在shell中执行它时,shell会根据正常的shell规则拆分命令行,即你得到“执行echo,参数&lt;password&gt;,将结果传递给sudo ...”。

Java 不使用 shell,因此您会得到“使用参数 &lt;password&gt; | sudo -u root -S ls 执行 echo”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多