2013-03-22 78 views
-2

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

我也想用代码远程连接桌面并在那里搜索几个文件。请让我知道如何去做。

+0

请一次只问一个问题。 – 2013-03-22 18:03:37

+0

你需要一个用于shell访问(或执行外部ssh程序)的ssh库和一个用于远程桌面的远程桌面协议库。或者,如果您只想将文件访问到桌面文件夹,则需要一个用于文件访问的协议。 – hyde 2013-03-22 18:07:13

+0

另一个伟大的库是[ssh.net](http://sshnet.codeplex.com/),它同时支持ssh和sftp,并具有许多其他特定功能。 – BenFradet 2013-03-22 18:18:12

回答

2

要回答你的第一个问题:

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

为了从Windows运行该窗体应用程序,你可以一个软件库像格拉纳多斯从http://granados.sourceforge.net/集成到连接并运行该脚本或者您可以简单地设置腻子状客户端运行的脚本,并产卵,作为一个外部过程,即:

Process.Start("C:\Putty\putty.exe -ssh -m C:\myScript.txt [email protected]); 

有关设置脚本的更多信息,请参阅Scripting over ssh through putty on windows。这听起来像你将不得不将输出从putty保存到一个文件中,然后在你的WinForms应用程序中读取该文件。

另一种选择是添加对granados等库的引用,或者只是使用NuGet包管理器将'ssh.net'添加到您的winforms应用程序中。在http://sshnet.codeplex.com/discussions/285219有一个例子,他们打开一个到服务器的连接,执行一个命令并使用ssh.net库读取结果。

第二个问题取决于远程PC如何连接到您。如果它们是相同的共享网络上(如:工作中的内联网),你可以对你有兴趣,并通过使用像路径直接检查文件系统的机器设置网络共享: System.IO.File.GetAttributes(@"\\hostname\shareName\filename.txt");

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