Использование канала для нескольких команд, ответов и интерактивных команд? - PullRequest
0 голосов
/ 30 ноября 2010

Я начинаю изучать 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 , кажется, всегда закрывается после выполнения команды (например, df -h ). В примере будет sendRequest после channelOpen . Тогда канал всегда закрывается после dataReceived независимо от того, что я сделал.

Мне интересно, связано ли это с тем, что сервер отправил EOF после команды. И поэтому этот канал должен быть закрыт? Должен ли я просто открыть несколько каналов для нескольких команд?

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

1 Ответ

2 голосов
/ 30 ноября 2010

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

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

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

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

...