从C#Web应用程序中的命令提示符处执行命令

时间:2018-11-29 06:28:36

标签: c# command-prompt

我有一个C#Web应用程序,我想在其中一个接一个地执行Unix命令。我希望出现命令提示符窗口,然后在每个命令执行之后,移至下一个命令,然后退出该窗口。我已经尝试了以下方法,但是命令提示符窗口没有出现,并且每次等待后命令都没有执行

   public void connecterOne()
      {
      try
        {
            using (Process p = new Process())
            {
                // set start info
                p.StartInfo = new ProcessStartInfo("cmd.exe")
                {
                    RedirectStandardInput = true,
                    RedirectStandardOutput = true,
                    UseShellExecute = false,
                    WorkingDirectory = @"c:\"
                };
                // event handlers for output & error
                p.OutputDataReceived += p_OutputDataReceived;
                p.ErrorDataReceived += p_ErrorDataReceived;

                // start process
                p.Start();
                // send command to its input
                p.StandardInput.Write("ftp server" + p.StandardInput.NewLine);
               p.StandardInput.Write("username" + p.StandardInput.NewLine);
       p.StandardInput.Write("pwd" + p.StandardInput.NewLine);
                string output = p.StandardOutput.ReadToEnd();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }
    }

    static void p_ErrorDataReceived(object sender, DataReceivedEventArgs e)
    {
        Process p = sender as Process;
        if (p == null)
            return;
        Console.WriteLine(e.Data);
    }

    static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
    {
        Process p = sender as Process;
        if (p == null)
            return;
        Console.WriteLine(e.Data);
    }

如何一一执行命令并打开命令提示符窗口,其中显示了正在执行的命令。我没有收到任何错误,但是没有看到输出。

2 个答案:

答案 0 :(得分:1)

这是一个安全问题Web应用程序无法访问用户pc命令提示符, 不在用户PC上的Web服务器上的IIS上部署的Web应用程序。

如果您运行一个进程,它将在该服务器上执行,但是您需要允许服务器执行这些命令。但是,我认为这是一种不好的做法。

答案 1 :(得分:0)

要在基于Linux的远程计算机上执行命令,您需要首先与ssh连接。对于C#,您可以使用SSH.NET

此外,此article可能会对您有所帮助。