2010-07-08 56 views
0

我正在開發一個SSH連接,然後允許向服務器發送命令並接收響應的包裝庫(在C#中,但對於此問題並不重要)打開SSH連接。最主要的,但問題在於,我希望有命令調用緩存響應流,然後返回這一切作爲一個字符串給用戶一旦外殼已經返回到控制檯提示符。這樣的話,我可以只火了一個命令,而不必每次服務器作業期間寫回臺時間處理所有的響應事件。在VT100中檢測控制檯提示符SSH會話流

所以,我的主要問題是,在VT100會話中,是否有任何確定服務器已返回到輸入提示的傻瓜式方法?到目前爲止,我發現的唯一的事情是,與我已經試過了兩個SSH服務器(Cygwin的和Fedora),輸出的最後一個字符序列,它似乎總是爲「[ESC] [0米」 [ESC],是ASCII代碼27我想認爲這是什麼標準,但是當我擡頭一看該序列是我發現這一點:

modesoff SGR0,關閉字符 屬性

我是那種希望有更具體的東西,比如「等待輸入」:P

任何想法,如果這應該適用於所有/大多數系統?或者如果有更好的方法?

回答

1

字符屬性,如粗體,閃爍,暗淡,下劃線,突出顯示等都是分配的數字代碼,可以在轉義序列中鏈接在一起以改變顯示器上的文本顯示。

ESC [ 0 m序列關閉所有設置,將文本恢復爲「正常」,這是正常亮度,沒有其他視覺屬性。

的VT100僅僅顯示字符來在其串行端口上。那麼什麼是提示是高度依賴於您連接什麼終端,最有可能解釋了爲什麼你沒有得到一個答案。

經常有提示的系統具有用戶可自定義的提示,而且如果不是控制字符,您可以在會話中檢測到隱藏的字符序列(如果不是控制字符),則可能會烘烤該字符。

另一種方式雖然不夠可靠,但要等待主機不活動的時間,這通常意味着等待輸入(但並非總是)。