在VT100 SSH会话流中检测控制台提示

在VT100 SSH会话流中检测控制台提示,ssh,terminal-emulator,vt100,Ssh,Terminal Emulator,Vt100,我正在开发一个包装器库(在C#中,但对这里的问题并不重要),以打开SSH连接,然后允许向服务器发送命令并接收响应。然而,最主要的是,我希望命令调用缓冲响应流,然后在shell返回控制台提示符后,将其作为一个字符串返回给用户。这样,我就可以发出一个命令,而不必在作业期间每次服务器写回控制台时都处理所有响应事件 所以,我的主要问题是,在VT100会话中,是否有任何简单的方法可以确定服务器已返回到输入提示符?到目前为止,我发现的唯一一件事是,对于我尝试过的两个ssh服务器(cygwin和Fedora)

我正在开发一个包装器库(在C#中,但对这里的问题并不重要),以打开SSH连接,然后允许向服务器发送命令并接收响应。然而,最主要的是,我希望命令调用缓冲响应流,然后在shell返回控制台提示符后,将其作为一个字符串返回给用户。这样,我就可以发出一个命令,而不必在作业期间每次服务器写回控制台时都处理所有响应事件

所以,我的主要问题是,在VT100会话中,是否有任何简单的方法可以确定服务器已返回到输入提示符?到目前为止,我发现的唯一一件事是,对于我尝试过的两个ssh服务器(cygwin和Fedora),它似乎总是输出的最后一个字符序列是“[esc][0m”[esc],即ASCII代码27,我认为这是标准的,但当我查找该序列时,我发现:

SGR0模式,关闭字符 属性

我希望有更具体的东西,比如“等待输入”:p


如果这适用于所有/大多数系统?或者有更好的方法吗?

字符属性,如粗体、闪烁、暗淡、下划线、突出显示等,都是指定的数字代码,可以按转义顺序链接在一起,以改变显示器上的文本显示

ESC[0 m
序列关闭所有设置,将文本返回到“正常”,即常规亮度,没有其他视觉属性

VT100只是在其串行端口上显示输入的字符。因此,提示的内容在很大程度上取决于您将终端连接到的对象,这很可能解释了为什么您没有得到答案

通常,具有提示的系统具有用户可自定义的提示,并且您可以烘焙隐藏的字符序列(如果不是控制字符),然后在会话中检测这些字符

另一种方法,虽然不那么可靠,但就是等待主机的一段时间不活动,这通常意味着它在等待输入(但并不总是)