c# - 从 C# 应用程序远程运行 sudo 命令时出现问题。

标签 c# linux ssh remote-access

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

研究让我相信在这种情况下我需要使用 sudo。但是当我像这样远程使用 sudo 时,它不起作用。

当我获得 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");

最佳答案

这就是最终对我有用的方法。将其张贴给遇到类似问题的人。

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

  2. 命令结构应该如下

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

关于c# - 从 C# 应用程序远程运行 sudo 命令时出现问题。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34691073/

相关文章:

python - 创建 .csv 文件的远程 python 脚本(权限被拒绝)

git - 为什么找不到匹配的Mac:客户端hmac-md5,hmac-sha1

javascript - 为什么 JS 事件 "onclick"在第二次单击后起作用,但不是第一次? ASP.NET框架

c# - 如何向用户显示安装程序

c - X11 鼠标移动事件

linux - 如何在 Linux 内核中启用动态调试?

c# - 如何在调用 API 之前启动注入(inject)服务?

c# - 如何编写属性以便访问内部变量?

linux - 从 Linux 切换到 Windows 时的字符编码

linux - 猫换主人了?