我正在使用SSH.NET来获取外部磁带机的一些信息。连接并执行一些基本命令对我来说非常合适:
ConnectionInfo connNfo = new ConnectionInfo("10.12.2.97", 22, "loginuser",
new AuthenticationMethod[]
{
// Password based Authentication
new PasswordAuthenticationMethod("loginuser","password")
}
);
using (var client = new SshClient(connNfo))
{
client.Connect();
//This command works fine
using (var cmd = client.CreateCommand("ls"))
{
string result = cmd.Execute();
}
}
但是现在我必须切换到root用户才能执行我需要的扩展命令。由于安全限制,最初无法使用root用户登录。参考这篇帖子How to run commands by sudo and enter password by ssh .net c#,我尝试了以下代码块:
using (var cmd = ssh.RunCommand("echo 'rootpassword' | sudo -u root -S fsstate"))
{
if (cmd.ExitStatus == 0)
Console.WriteLine(cmd.Result);
else
Console.WriteLine(cmd.Error);
}
但是随后我总是收到此错误消息:
sudo:未知用户:root
sudo:无法初始化策略插件
我在这里做错了什么?