我正在使用 .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 连接到系统并运行命令 - 它运行完美并提供了所需的输出。
我对这种行为感到困惑。我正在使用具有 root privilloginto 登录权限的用户名。因此排除了特权(无论如何,同一用户在 PuTTY 中获得输出)。
我想知道 Solaris(我运行的是 11.3 版)是否有任何设置或限制不允许 smbios 命令通过远程连接像这样运行?或者是别的东西?任何指导都将非常有帮助。如果需要任何进一步的信息,请告诉我。
最佳答案
嗯,原来是Path设置的问题。当您通过 Putty 登录时,将设置定义的 $PATH。因此 smbios 从 Putty 运行。
但是在 SSH session 中,不会应用 $PATH 环境变量。所以它无法找到要运行的 smbios。如果您提供 smbios 的完整路径 - 例如/usr/sbin/smbios,它可以在 Renci.SshNet 上正常执行。
关于c# - Solaris 不使用 Renci.SshNet 通过远程 session 返回某些命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39697624/