【问题标题】:How to do sudo -i by java while running on windows如何在 Windows 上运行时通过 java 执行 sudo -i
【发布时间】:2017-05-14 04:42:54
【问题描述】:

我正在 windows 上的 eclipse 中编写代码,我需要连接到一个 unix 机器并执行 sudo -i 然后运行一些 shell 命令。

我可以使用 jsch 创建 unix 会话,但无法执行命令“sudo -i”。谁能告诉我怎么做。

当我用谷歌搜索时,大多数结果都建议使用“Runtime.getRuntime().exec(“sudo -i”)”,但此命令将在 windows 上而不是在 unix 会话上查找进程。

【问题讨论】:

    标签: sudo


    【解决方案1】:

    这里有两件事:

    • sudo 必须进入您发送到远程站点的命令。但是当然 sudo 会要求输入密码,这使事情变得非常复杂。
    • 因此:直接以 root 用户身份连接通常要容易得多。含义:不要以普通用户身份登录,然后运行 ​​sudo - 最初以 root 身份登录。

    当然,后者有时是不可能的,因为对 root 帐户禁用了远程登录。

    【讨论】:

    • System.out.println("输入用户名和密码"); session.connect(); System.out.println("会话连接成功"); ChannelExec 频道=(ChannelExec) session.openChannel("exec"); BufferedReader in=new BufferedReader(new InputStreamReader(channel.getInputStream())); channel.setCommand("sudo -i pwd");通道.connect();
    • 将此添加到您的问题中,而不是将内容放入 cmets。和;它根本不是那么简单。 Sudo 期望命令名称以 root 权限执行。密码不是命令。
    • 添加这个有效 channel.setCommand("sudo su - root -c \"pwd\";");
    • 很高兴听到您找到了解决方案。如果您认为我的回答有助于到达那里,请考虑接受或至少支持。否则你可能会考虑删除整个问题。
    猜你喜欢
    • 2019-08-14
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    相关资源
    最近更新 更多