0

MockSSHを使用してモック ssh シェル サーバーをセットアップしようとしています。

扱っている特定のアプリケーションをテストするには、シェルが入力をエコーし​​ないようにする必要があります。アプリケーションは常に「stty -echo」コマンドを発行して開始するため、stdout には出力のみが含まれます。元:

user@host> echo "hello world"
hello world
user@host> stty -echo
user@host>
hello world
user@host>
I swear I just typed 'echo "hello world"'!

デフォルトで、または「stty -echo」コマンドが発行されたときにエコーを無効にしても、同様にうまく機能します。

4

1 に答える 1

1

数日間の作業の後、SSHProtocol 実装の characterReceived メソッドから「self.termina.write(ch)」をコメントアウトすると、「stty -echo」のように、入力印刷が完全に無効になりました。コマンドはbashで実行されていました。

class SSHProtocol(recvline.HistoricRecvLine):
    [...]
    def characterReceived(self, ch, moreCharactersComing):
        self.lineBuffer[self.lineBufferIndex:self.lineBufferIndex+1] = [ch]
        self.lineBufferIndex += 1

        #if not self.password_input:
        #    self.terminal.write(ch)

これは私の目的のために機能します.SSHプロトコルで簡単にフラグを設定して、入力印刷を有効/無効にできると確信しています.

私が学んだことは、recvline.HistoricRecvLine.characterRecieved() メソッドが端末からの入力テキストを処理し、terminal.write() を使用して STDOUT に出力することです。

于 2015-08-02T19:22:00.437 に答える