从 C# 应用程序远程发出 运行 sudo 命令。
Issue in running sudo commands remotely from a c# application.
我正在用 C# 编写一个实用程序来获取远程机器的系统信息。在某些 Linux 机器上,直接登录到 root 是不允许的,我 运行 的一些命令需要 root 权限。我能够建立 SSH 会话(我正在使用 Renci SSh 库)。
研究使我相信在这种情况下我需要使用 sudo。但是当我像这样远程使用 sudo 时,它不起作用。
当我获得 root 访问权限时,代码的第一部分有效。在不允许直接 root 访问的地方——第一部分没有 return 任何东西,第二部分使用 sudo 也没有 returning 任何东西)。请查看我使用的代码(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");
这就是最终对我有用的方法。发布给遇到类似问题的人。
requiretty 应在 sudo 文件中注释掉或设置为特定用户不需要。
命令结构应为
echo <password> | sudo -S <linux command>"
我正在用 C# 编写一个实用程序来获取远程机器的系统信息。在某些 Linux 机器上,直接登录到 root 是不允许的,我 运行 的一些命令需要 root 权限。我能够建立 SSH 会话(我正在使用 Renci SSh 库)。
研究使我相信在这种情况下我需要使用 sudo。但是当我像这样远程使用 sudo 时,它不起作用。
当我获得 root 访问权限时,代码的第一部分有效。在不允许直接 root 访问的地方——第一部分没有 return 任何东西,第二部分使用 sudo 也没有 returning 任何东西)。请查看我使用的代码(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");
这就是最终对我有用的方法。发布给遇到类似问题的人。
requiretty 应在 sudo 文件中注释掉或设置为特定用户不需要。
命令结构应为
echo <password> | sudo -S <linux command>"