2015-08-01 7 views
0

Я пытаюсь настроить макет ssh shell server с помощью MockSSH.Twisted Conch MockSSH: реализация 'stty -echo'

Чтобы проверить конкретное приложение, с которым я имею дело, мне нужно иметь возможность остановить оболочку от ввода эха. Приложение всегда начинается с выдачи команды «stty -echo», так что stdout содержит только вывод. EX:

[email protected]> echo "hello world" 
hello world 
[email protected]> stty -echo 
[email protected]> 
hello world 
[email protected]> 
I swear I just typed 'echo "hello world"'! 

отключение эхо по умолчанию, или когда «Запущенная -echo» команды выдается будет работать одинаково хорошо.

ответ

0

После нескольких дней работы, я нашел решение, которое будет работать для моих целей, комментируя «self.termina.write (ch)» из метода реализации функции SSHProtocol, полностью отключенного ввода, Команда 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.