簡體   English   中英

C# ShellStream 在 Ubuntu 某些回復后處理

[英]C# ShellStream disposed after certain replies by Ubuntu

我創建了自己的終端來進行 SSH 通信(renci.sshnet / C#)。 我最近遇到了一個特定於 Ubuntu SSH 的問題。

問題:

一些命令,如 'cd' 工作正常。 其他命令如 'ls' 將得到正確的答復,但之后 Shellstream 對象將被處理。 你能指出我為什么會發生這種情況的正確方向嗎?

故障排除:

  • 當我使用 Moba 時,我沒有遇到有問題的行為。
  • 使用 Openwrt qsdk(不同的 Linux)測試,完美運行
  • 收到的最后兩 (2) 個字符是 13,10 (\\r\\n)
  • 我已經啟動了一個 shell 腳本 (test.sh),它執行 'cd' 仍然相同的行為。
  • 創建了不觸發的錯誤事件處理程序。
  • 嘗試使用wireshark,但對它的了解不夠,無法進行故障排除。 剛剛看到很多加密的消息。
  • 刪除了所有 ShellStream Read 函數,它仍然在第一個 'ls' 命令之后處理 Shellstream。
  • 當我發出命令 stty -echo 時,它似乎解決了這個問題。 不知道為什么。 stty -echo 基本上只是讓它這樣 Linux 不會回顯你輸入的命令。

在此處輸入圖片說明 創建 SSH 客戶端和 Shell Stream

        private void ConnectSSH()
        {
            if (m_strAddr == "")
            {
                LaunchSSHInfoForm();
                return;
            }

            m_Client = new SshClient(m_strAddr, m_strUser, m_strPW);

            try
            {
                m_Client.Connect();
                m_Output = m_Client.CreateShellStream("Terminal", 1, 1, 50, 50, 100);
            .......

發送字符串

            if (m_Client != null && m_Client.IsConnected)
            {
                try
                {
                    m_Output.WriteLine(m_strInput.Text);
                    m_RtbParser.AddStringToQueue(m_strInput.Text, Colors.LightCoral);
                    m_strInput.Text = "";
                }
                catch (Exception ex)
                {
                    Console.WriteLine("{0} First exception caught.", ex);
                }
            }

讀取字符串

            if (m_Client != null && m_Client.IsConnected)
                strMessage = m_Output.Read();

謝謝,任何幫助將不勝感激。

好消息,我想我找到了答案,我想分享一下。

因此,如果您注意到問題中的屏幕截圖顯示了 1 列中的所有目錄。

我將列數從 1 增加到 0,現在終端顯示的數據與您在實際 linux 終端中看到的數據更具有可比性,更重要的是,它不會處理 ShellStream。

m_Output = m_Client.CreateShellStream("Terminal", 0, 0, 0, 0, 1000);

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM