我使用.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命令通过远程连接这样运行?还是别的什么?任何指导都会非常有帮助。如果需要进一步的信息,请告诉我。
答案 0 :(得分:0)
嗯,事实证明它与路径设置有关。当您通过Putty登录时,定义的$ PATH将被设置。因此,smbios来自Putty。
但在SSH会话中,$ PATH环境变量未应用。所以它无法找到smbios来运行。如果你给出smbios的完整路径 - 比如/ usr / sbin / smbios,它在Renci.SshNet上执行得很好。