我正在使用.NET库Renci.SshNet连接到远程Solaris计算机(它是ESXi上的一个VM)。它连接得很好。
我使用以下方法执行命令并获得标准输出。这在任何Linux机器上都能正常工作,在Solaris上几乎所有的命令都能正常工作(除了少数几个——这就是问题所在)

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

例如当command = "cat /etc/release | grep Solaris"-它工作正常。
但是,当command = "smbios -t SMB_TYPE_SYSTEM"-它不返回任何内容。我试着把它重定向到一个文件。文件被创建-但上面没有任何内容。
我使用PuTTY连接到系统并运行命令-它运行得很好,并给出了所需的输出。
我对这种行为感到困惑。我正在使用具有根权限的用户名登录。因此排除了特权(不管怎样,同一个用户用PuTTY获得输出)。
我想知道在Solaris(我运行的是11.3版)上是否有任何设置或限制不允许smbios命令在远程连接上这样运行?或者是别的什么?任何指导都会非常有帮助。如果需要进一步的信息,请告诉我。

最佳答案

原来是和路径设置有关。当您通过Putty登录时,将设置定义的$PATH。因此smbios从Putty运行。
但是在SSH会话中,$PATH环境变量不会被应用。所以它找不到要运行的smbios。如果给出smbios-like/usr/sbin/smbios的完整路径,它将在Renci.SshNet上执行。

07-24 18:30