我在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");
答案 0 :(得分:0)
这最终对我有用。发布给那些来这里有类似问题的人。
requiretty应该在sudo文件中注释掉,或者设置为特定用户不需要。
命令结构应为
echo <password> | sudo -S <linux command>"