c# - 从 Mono 访问 Ubuntu 终端

标签 c# ubuntu mono

背景
我正在编写一个 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/

相关文章:

c# - 如何保持控件禁用直到线程结束

ubuntu - 奇点/ubuntu : how to use the host authentical agent

linux - 通过 cron 为 django 运行 python 脚本

c# - Xamarin vs. Mono vs. Monodevelop

python.net import clr 抛出无效指针错误

c# - 带有 Mono 的 Log4Net 缺少文件名和行号

c# - 异步 LINQ - 不懒惰?多线程?

c# - 为什么不将所有服务类都集中到一个工厂方法中(而不是注入(inject)接口(interface))?

c# - AzureWebJobs仪表板配置错误

linux - gnutls_handshake() 失败 : Handshake failed GIT