Solaris不使用Renci.SshNet通过远程会话返回某些命令的输出

时间:2016-09-26 08:05:21

标签: c# linux ssh solaris

我使用.NET库Renci.SshNet连接到远程Solaris机器(它是ESXi上的VM)。它很好。

我使用以下方法执行命令并获取标准输出。这适用于任何Linux机器和几乎所有Solaris上的命令(除了少数 - 这是问题所在)

outstring = sshClient.RunCommand(command).Execute();

例如,当command = "cat /etc/release | grep Solaris" -it工作正常时。 但是,当command = "smbios -t SMB_TYPE_SYSTEM"时 - 它不会返回任何内容。我尝试将其重定向到文件。该文件已创建 - 但没有任何内容。

我使用PuTTY连接到系统并运行命令 - 它运行完美并提供所需的输出。

我对这种行为感到困惑。我使用root priviloginto登录用户名。因此排除了权限(无论如何,同一个用户在PuTTY中获取输出)。

我想知道Solaris上是否有任何设置或限制(我运行的是版本11.3),它不允许smbios命令通过远程连接这样运行?还是别的什么?任何指导都会非常有帮助。如果需要进一步的信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

嗯,事实证明它与路径设置有关。当您通过Putty登录时,定义的$ PATH将被设置。因此,smbios来自Putty。

但在SSH会话中,$ PATH环境变量未应用。所以它无法找到smbios来运行。如果你给出smbios的完整路径 - 比如/ usr / sbin / smbios,它在Renci.SshNet上执行得很好。