请注意,这必须在 Windows 框上,因为我正在使用 C# 访问有关 Windows 的信息
(我需要来自 windows box 和 linux box 的信息,另外我认为制作一个没有 gui 运行的程序/脚本并在没有用户干预的情况下从 linux box 访问窗口会更加困难,如果这不是真的请告诉我,我很乐意让它在 *nix 上运行,只有访问 Windows 信息的部分在 Windows 上运行)。
有一个很好的 c# api 可以从 Windows 获取此信息,在 *nix 上它足够简单,可以运行命令并根据我的需要解析输出。
关于从 c# 使用 ssh 似乎没有太多体面的建议,sharpSSH 和 Granados 似乎多年没有更新,它们体面吗?我应该担心安全问题吗?
(我正在检索的信息并不敏感,但如果 ssh 实现可能存在未修补的安全漏洞(如果它们多年未更新)我担心有人窃取我的凭据。
是否还有其他合适的 c# ssh 库。如果命令输出很简单,我是否应该只运行 plink/putty(是否很难为 plink 运行一个 windows cmd shell,并捕获输出(有没有办法在不弹出 shell 的情况下做到这一点)?
附言虽然商业图书馆看起来不错,但我更喜欢免费的东西(如果可能的话,在成本和源代码方面是免费的)。
最佳答案
示例代码
有几个用于 C# 的商业 SSH 客户端库。以下代码显示了如何连接到 *nix 框,运行命令并使用我们的 Rebex SSH Shell 读取响应.
// create client, connect and log in
Ssh client = new Ssh();
client.Connect(hostname);
client.Login(username, password);
// run the 'uname' command to retrieve OS info
string systemName = client.RunCommand("uname -a");
// display the output
Console.WriteLine("OS info: {0}", systemName);
client.Disconnect();
对于高级场景(例如交互式命令),请参阅 SSH Shell Tutorial .
引用与稳定性
您可能已经在不知不觉中使用 Rebex SSH 核心库。 Microsoft 在包括 Expression Web 和 Visual Studio 2010 在内的多种产品中使用了 Rebex SFTP(使用此 SSH 库作为传输层)。Rebex SSH Shell“只是”其之上的另一层(最值得注意的是终端模拟器)。
您可以从 http://www.rebex.net/ssh-shell.net/download.aspx 下载试用版.支持论坛使用与该站点非常相似的引擎并在 http://forum.rebex.net/ 上运行
免责声明:我参与了 Rebex SSH 的开发
关于c# - 我想从使用 c# 运行的 Windows 框中通过 ssh 运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642338/