【问题标题】:Passing arguments to a shell script from C# process从 C# 进程向 shell 脚本传递参数
【发布时间】:2011-06-13 10:47:34
【问题描述】:

我被一个问题困扰了好几天。

我正在连接一个 linux 机器,并想运行一些脚本并收集生成的文件。

步骤是 1) 连接 2)运行一些脚本(它们是交互式的,在某些时候需要输入) 3) 获取作为结果生成的文件。

1)我是通过plink.exe(putty.exe的命令行版本)连接到linux box,这一步是成功的。

2) 我能够运行脚本,但是当脚本运行时它需要一些输入,我无法弄清楚如何将这些输入传递给脚本。发生的情况是程序挂起,因为脚本没有完成。

这些输入是固定的并且在某些值之间变化,我可以将这些值硬编码到应用程序/程序中。

请帮我做这件事。 提前致谢 -阿卡什

【问题讨论】:

  • 如果 plink 不成功,您需要先解决该问题。您能否提供更多信息 - 错误、您如何调用 plink、您如何设置 SSH 服务器?
  • 在 bash shell 上,我们确实像 $scriptname 一样运行 所以看看你的 plink 是否有这样的参数传递 API 支持
  • 嗨 Rup,Plink 连接工作正常。我能够连接到服务器并运行命令。之前我们在哪里使用腻子。
  • 能否请您澄清一下,为什么如果 Plink 工作正常,您说这一步不成功?它有什么不成功的?有错误信息吗?
  • 您好 Zespri, 很抱歉我写错了,没有成功。再次抱歉。

标签: c# linux process plink


【解决方案1】:

您可以使用此代码

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "YourFile.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = "";//Arguments should be here
using (Process exeProcess = Process.Start(startInfo))
{
    exeProcess.WaitForExit();
}

您可以使用 exeProcess.StandardOutput.ReadToEnd(); 来获取结果

【讨论】:

  • 您好 Navid,感谢您的回复。我已经尝试过这种方法,但它不起作用。在 start.Info.Arguments 我已经传递了在连接期间使用的参数。
  • 我使用了这个 Arguments="plink mysession echo hello, world";结果得到你好,世界
猜你喜欢
  • 1970-01-01
  • 2017-01-22
  • 2016-03-20
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-01
  • 1970-01-01
相关资源
最近更新 更多