从c#应用程序远程运行sudo命令的问题。

时间:2016-01-09 07:52:12

标签: c# linux ssh remote-access

我在c#中编写一个实用程序来获取远程机器的系统信息。在某些Linux机器上,不允许直接登录到root,我运行的一些命令需要root权限。我能够建立SSH会话(我使用的是Renci SSh库)。

研究让我相信这种情况我需要使用sudo。但是,当我像这样远程使用sudo时,它无法正常工作。

当我获得root访问权限时,代码的第一部分会起作用。如果不允许直接root访问 - 第一部分不返回任何内容,第二部分使用sudo也不返回任何内容。请参阅我正在使用的代码(客户端是分配给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");

1 个答案:

答案 0 :(得分:0)

这最终对我有用。发布给那些来这里有类似问题的人。

  1. requiretty应该在sudo文件中注释掉,或者设置为特定用户不需要。

  2. 命令结构应为

    echo <password> | sudo -S <linux command>"