2010-11-30 3 views
0

Я начинаю изучать twisted.conch для автоматизации некоторых задач над SSH.Использование канала для нескольких команд, ответов и интерактивных команд?

I tried to modify образец sshclient.py от http://www.devshed.com/c/a/Python/SSH-with-Twisted/4/. Он запускает 1 команду после входа в систему и распечатывает захваченный вывод.

What I wanted to do должен запускать команды серии и, возможно, решать, что делать на основе результата.

The problem I ran into что twisted.conch.ssh.channel.SSHChannel, кажется, всегда закрывая себя после выполнения команды (например, ФР -h). Пример будет sendRequest после channelOpen. Затем канал всегда закрывается после dataReceived независимо от того, что я сделал.

Мне интересно, если это связано с отправкой сервером EOF после команды. И поэтому этот канал должен быть закрыт? Должен ли я просто открывать несколько каналов для нескольких команд? (rm -i somefile). Кажется, что, поскольку сервер не отправил EOF, SSHChannel.dataReceived никогда не вызывается. Как мне удастся захватить вывод в этой ситуации и что мне делать, чтобы отправить ответ?

+0

Я хотел бы пояснить, что «запуск серии команд» аналогичен команде * expect * – 2010-11-30 10:13:29

ответ

2

Должен ли я просто открывать несколько каналов для нескольких команд?

Да. Вот как работает SSH.

никогда SSHChannel.dataReceived не вызывается

Это не походит на то, что должно произойти. Возможно, вы можете включить минимальный пример, который воспроизводит поведение.

+0

Спасибо за ответ. Чтобы воспроизвести поведение, вам нужно всего лишь использовать код с http://www.devshed.com/c/a/Python/SSH-with-Twisted/4/ и запустить команду * rm -i somefile *. dataReceived должен печатать все, что получено, я ничего не вижу. – 2010-11-30 06:48:25

Смежные вопросы