Модуль Python Paramiko с использованием нескольких команд

У меня есть класс, который создает соединение. Я могу подключиться и выполнить 1 команду до закрытия канала. В другой системе у меня есть несколько команд, и канал не закрывается. Очевидно, это проблема конфигурации систем, к которым я пытаюсь подключиться.

class connect:

    newconnection = ''

    def __init__(self,username,password): 
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        try:
            ssh.connect('somehost', username=username,password=password,port=2222,timeout=5)
        except:
            print "Count not connect"
            sys.exit()
        self.newconnection = ssh

    def con(self):
        return self.newconnection

Затем я использую команду 'ls', чтобы распечатать какой-нибудь вывод

sshconnection = connect('someuser','somepassword').con()


stdin, stdout, stderr = sshconnection.exec_command("ls -lsa")

print stdout.readlines() 
print stdout 

stdin, stdout, stderr = sshconnection.exec_command("ls -lsa")

print stdout.readlines() 
print stdout 

sshconnection.close()
sys.exit()

После первого запуска exec_command он печатает ожидаемый вывод списка dir. Когда я печатаю стандартный вывод после первого exec_command, похоже, что канал закрыт

<paramiko.ChannelFile from <paramiko.Channel 1 (closed) -> <paramiko.Transport at 0x2400f10L (cipher aes128-ctr, 128 bits) (active; 0 open channel(s))>>> 

Как я уже говорил в другой системе, я могу продолжать выполнять команды, и соединение не закрывается. Есть ли способ, которым я могу держать это открытым? или лучше я вижу причину, по которой он закрывается?

редактироватьТаким образом, похоже, что вы можете запустить только 1 команду на SSHClient.exec_command ... поэтому я решил получить get_transport (). Open_session () и затем запустить команду. Первый всегда работает. Второй всегда терпит неудачу, и сценарии просто зависают

Ответы на вопрос(3)

Ваш ответ на вопрос