【问题标题】:Run unix commands using C# [closed]使用 C# 运行 unix 命令 [关闭]
【发布时间】:2013-03-22 18:02:46
【问题描述】:

是否可以在 Windows Forms 中使用 c# 连接到 unix 服务器并运行 shell 脚本,并在某些文本框中检索脚本的输出?

我还想使用代码远程连接桌面并在那里搜索多个文件。请让我知道该怎么做。

【问题讨论】:

  • 请一次只问一个问题。
  • 你想要一个用于 shell 访问(或执行外部 ssh 程序)的 ssh 库,以及一个用于远程桌面的远程桌面协议库。或者,如果您只想对桌面文件夹进行文件访问,那么您需要一个文件访问协议。
  • 另一个很棒的库是ssh.net,它同时支持 ssh 和 sftp,并具有许多其他特定功能。

标签: c# unix


【解决方案1】:

回答你的第一个问题:

通常,Unix 机器会运行某种安全 shell (SSH) 服务器,它允许您使用特定的用户名/密码连接并运行您的 shell 脚本。

为了从您的 Windows 窗体应用程序中运行它,您可以集成来自 http://granados.sourceforge.net/ 的软件库(如 Granados)来连接和运行脚本,或者您可以简单地设置像 PuTTY 这样的客户端来运行脚本并将其生成为外部进程,即:

Process.Start("C:\Putty\putty.exe -ssh -m C:\myScript.txt remoteUser@192.168.1.1);

您可以查看Scripting over ssh through putty on windows 了解有关设置脚本的更多信息。听起来你必须将 putty 的输出保存到一个文件中,然后如果你按照这个方向使用你的 WinForms 应用程序来读取它。

另一种选择是添加对像 granados 这样的库的引用,或者简单地使用 NuGet 包管理器将“ssh.net”添加到您的 winforms 应用程序。 http://sshnet.codeplex.com/discussions/285219 有一个示例,他们打开与服务器的连接,执行命令并使用 ssh.net 库读取结果。

对于第二个问题,这取决于远程 PC 与您的连接方式。如果它们在同一个共享网络上(例如:工作中的 Intranet),您可以在您感兴趣的机器上设置网络共享,并使用以下路径直接检查文件系统: System.IO.File.GetAttributes(@"\\hostname\shareName\filename.txt");

如果远程计算机实际上位于远程位置,则变得更加困难,您将需要使用远程桌面库或让远程计算机设置 FTP 服务器或类似的东西来浏览文件系统。

【讨论】:

    猜你喜欢
    • 2015-08-02
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 2021-12-05
    • 2012-12-28
    • 2015-12-23
    相关资源
    最近更新 更多