使用C#运行unix命令

时间:2013-03-22 18:02:47

标签: c# unix

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

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

1 个答案:

答案 0 :(得分:2)

回答你的第一个问题:

通常,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服务器或类似的东西来浏览文件系统。