【发布时间】:2016-01-09 07:52:11
【问题描述】:
我正在用 C# 编写一个实用程序来获取远程机器的系统信息。在某些 Linux 机器中,不允许直接登录到 root,并且我正在运行的某些命令需要 root 权限。我能够建立 SSH 会话(我正在使用 Renci SSh 库)。
研究使我相信在这种情况下我需要使用 sudo。但是当我像这样远程使用 sudo 时,它不起作用。
当我获得 root 访问权限时,代码的第一部分有效。在不允许直接 root 访问的情况下 - 第一部分不返回任何内容,使用 sudo 的第二部分也不返回任何内容)。请查看我使用的代码(client 是分配给 SshClient 的名称)。
我不太了解 Linux。请求有关如何处理此问题的指导。
client.RunCommand("cat /proc/cpuinfo | grep model | grep name");
client.RunCommand("dmidecode -s system-manufacturer");
client.RunCommand("sudo cat /proc/cpuinfo | grep model | grep name");
client.RunCommand("sudo dmidecode -s system-manufacturer");
【问题讨论】:
-
首先在支持 ssh (git bash?) 的终端中手动尝试命令,然后从 c# 运行它们。这样,您将真正看到哪里出了问题。现在你只是闭着眼睛画墙......
-
谢谢沃特。我确实直接在几个“远程”机器终端上尝试了这些命令。他们直接在终端上工作。但不是通过c#。我也会按照您的建议尝试使用 ssh 终端。
-
使用腻子并远程连接。工作正常。
标签: c# linux ssh remote-access