【问题标题】:Command Line Control over a network网络上的命令行控制
【发布时间】:2012-08-13 15:44:51
【问题描述】:

有什么方法可以远程访问另一台 PC 并以完全访问权限使用它的命令行?

我正在尝试开发一个可以通过命令行完全控制其所有客户端的服务器。

它将是一个 ubuntu 服务器,但所有客户端都是 Windows 7 Pro x64。

我希望能够在 VC# .Net 3.5 中编写此脚本,但作为最后的手段,我会在 C++ 中编写。

我有什么选择?

【问题讨论】:

  • 对我来说听起来像是 SSH...虽然我不知道您是否可以通过 SSH 连接到 Windows 机器并获得完全控制权。
  • 有可能但也有netcat:joncraton.org/blog/46/netcat-for-windows
  • 有适用于 windows 的 ssh 服务器,但它们往往是免费的或功能正常的(选择一个)。
  • 所以你想从 linux 获取 windows 命令行?
  • 我正在尝试编写一个脚本,允许我在客户端的命令行上运行命令。

标签: c# c++ windows linux remote-access


【解决方案1】:

远程命令行?

我使用来自sysinternalsPSEXEC 就像这样:

psexec \\machinename cmd.exe

再简单不过了

抱歉 - 我显然错过了需要从 linux 控制它的部分。

【讨论】:

    【解决方案2】:

    也许我误解了你,但你总是可以在 Windows 机器上实现一个 C# 客户端,它使用 IPC 从命令提示符发送输入和读取输出,并且你有一个 C++/mono C#/netcat 服务器正在运行在 Linux 上。客户端将来自流的所有内容转换为字符串并将其写入命令提示符,然后获取输出并将其写入流。 感谢代码项目:http://www.codeproject.com/Articles/20250/Reverse-Connection-Shell

    cmd = new Process();
            cmd.StartInfo.FileName = "cmd.exe";
            cmd.StartInfo.CreateNoWindow = true;
            cmd.StartInfo.UseShellExecute = false;
            cmd.StartInfo.RedirectStandardOutput = true;
            cmd.StartInfo.RedirectStandardInput = true;
            cmd.StartInfo.RedirectStandardError = true;
            cmd.OutputDataReceived += new
            DataReceivedEventHandler(CmdOutputDataHandler);
            cmd.Start();
            cmd.BeginOutputReadLine();
    
    public void CmdOutputDataHandler(object sendingProcess,
        DataReceivedEventArgs cmdout)
        {                         
                    output.Append(cmdout.Data);
                    writer.WriteLine(output);
                    writer.Flush();                
    
        }
    
    // Run this in a separate thread to prevent blocking
    while (true)
    {
    input.Append(reader.ReadLine());
    input.Append("\n");
    cmd.StandardInput.WriteLine(input);
    input.Remove(0, input.Length);
    }
    

    【讨论】:

      【解决方案3】:

      我从未在 Linux 中尝试过这个,但它在完整的 Windows 环境中很有用。查看远程计算机上的 PowerShell Remoting。您也许可以通过 Linux 机器上的 C# MONO 连接到远程计算机,但我不确定 MONO 中是否还提供适当的类。

      【讨论】:

        猜你喜欢
        • 2018-04-07
        • 2011-12-29
        • 1970-01-01
        • 1970-01-01
        • 2012-09-13
        • 2012-08-16
        • 1970-01-01
        • 1970-01-01
        • 2010-10-12
        相关资源
        最近更新 更多