背景
我正在编写一个 Web 应用程序,以便可以从网站控制 Ubuntu 服务器。
我的一个想法是从单声道运行“屏幕”应用程序并从那里重定向我的输入和输出。
从单声道运行“屏幕”:
ProcessStartInfo info = new ProcessStartInfo("screen", "-m");
info.UseShellExecute = false;
info.RedirectStandardOutput = true;
info.RedirectStandardInput = true;
var p = new Process();
p.StartInfo = info;
p.Start();
var output = p.StandardOutput;
var input = p.StandardInput;
但是使用 RedirectStandardInput 运行“screen”会出现错误:
Must be connected to a terminal
我尝试了许多不同的参数,但似乎都不适用于“重定向标准输入”
控制服务器的其他想法将不胜感激
最佳答案
我认为这是一个典型的问题,您在其中询问如何实现问题的解决方案,而不是询问如何解决您的问题。我认为您不应该做一些奇怪的事情,例如制作一个网络应用程序,通过终端将用户操作隧道传输到服务器。
我认为您可以绕过所有这些,并且无需编写一行代码,即可利用平台(在本例中为 Gtk+)已经为您提供的功能:
您可以使用 Broadway GDK backend 在服务器中运行 gnome-terminal 。这样 gnome-terminal 应用程序将不会在服务器中运行,而是在您指定的端口上打开 Web 服务器。稍后,您可以使用任何支持 WebSockets 的浏览器来控制它。
与迄今为止提供的其他解决方案相比,这是最简单且不那么麻烦的解决方案。如果您仍然对使用 Mono 进行 Web 开发感到兴奋,您仍然可以,并且可以将此访问权限嵌入到 iFrame 或其他内容中。
(PS:如果您不想依赖安装在服务器中的GTK;您可以在网页的客户端部分使用WebSockets,以便能够将事件从服务器发送到客户端,并且库SSHNET 直接通过线路发送用户的输入。)
关于c# - 从 Mono 访问 Ubuntu 终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11254676/