从C#远程调用Unix shell脚本

6
在我的当前项目中,我需要从C#应用程序调用Unix shell脚本。我还需要获取响应,以便了解脚本是否成功执行或是否发生任何错误。
C#程序正在Windows机器上运行。我需要连接到Unix机器并执行脚本。
请问有人知道如何使用C#完成这个任务吗?

你是否在Unix系统上运行C#程序? - Gabe
C#程序在Windows机器上。我需要连接到Unix机器并执行脚本。 - Hari KRK
3个回答

4

我已经检查过了。这似乎很有前途。但正如作者所提到的,它并不完整。当连接到远程机器时,我们会遇到错误。我们正在努力解决这个问题。 - Hari KRK
嗨,我们尝试了一下,但无法解决这个问题。当连接到远程机器时,我们遇到了超时错误。 - Hari KRK
嗨,我们尝试了一下,但无法解决这个问题。当连接到远程机器时,我们遇到了超时错误。 - Hari KRK
嗨,你访问过sharpSsh的作者网站了吗? - OnesimusUnbound
直接使用作者网站上的源代码对我们很有帮助。非常感谢您的帮助。 - Hari KRK

2
使用System.Diagnostics.Process可以很简单地实现这一点。

// 启动子进程。
Process p = new Process();
// 重定向子进程的错误流。
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.FileName = "Write500Lines.exe";
p.Start();
// 在读取重定向的错误流之前不等待子进程退出。
// p.WaitForExit();
// 先读取错误流,然后再等待。
string error = p.StandardError.ReadToEnd();
p.WaitForExit();


谢谢Terrance。C#应用程序运行在Windows环境中,我需要连接到远程UNIX机器以执行那里的shell脚本。有没有直接的方法可以实现这个? - Hari KRK

1

我也遇到了同样的问题,花了大约一个月的时间在谷歌上寻找解决方案。

最终,我决定使用plink.exe(putty.exe的命令行版本)连接到Unix服务器并在那里执行脚本。

你必须通过c#进程使用plink,我已经尝试过了,这非常有效。

但是现在我面临的问题是,当我从c#进程运行脚本时,我无法将参数传递给该脚本。可能可以说我不知道如何做到这一点。

祝好, -Aakash


嗨Aakash,就像OnesimusUnbound所说的那样,去原始网站http://www.tamirgal.com/blog/page/SharpSSH.aspx查看sharpSSH。 - Hari KRK
是的Hari,但我更喜欢Plink而不是SharpSSH,因为Plink更稳定。 - Akash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接