我正在从c#运行以下命令。有一个提示将显示我想回答“是”如何使用当前代码执行此操作
如果我将其作为批处理脚本运行,我可以这样做
echo y | pscp.exe -batch -pw password E:\\Certs\\client.conf me@<ip>:/home/user
有效 - 但不确定如何使用下面的
来复制这个string pscpPath="-batch -pw password E:\\Certs\\client.conf me@<ip>:/home/user";
ExecuteCopyCerts("pscp.exe", pscpPath);
功能:
public Boolean ExecuteCopyCerts(string fileName, string arguments)
{
txtLiveHubStatus.Text = "";
try
{
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(fileName, arguments);
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
string result = proc.StandardOutput.ReadToEnd();
return proc.ExitCode == 0;
}
}
答案 0 :(得分:0)
要重申Hesam所说的内容,尽管提示是Y,而不是。这是证书的提示,仅在对每台新Linux机器的第一次调用时出现。今天,我在我们的一个应用程序中使用此代码。
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "pscp";
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = false;
psi.Arguments = $"-r -p -pw {passWord} \"{localFileNamePath}\" {userName}@{hostName}:{remotePath}";
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
using (Process process = new Process())
{
process.StartInfo = psi;
process.Start();
process.StandardInput.WriteLine("Y");
process.WaitForExit();
}