Чтобы прекратить возвращаться через SSH используя Pexpect - PullRequest
0 голосов
/ 29 апреля 2010

Я пытаюсь использовать pexpect для подключения ssh к компьютеру, но я не хочу возвращаться к исходному компьютеру. Код у меня есть:

#!/usr/bin/python2.6

import pexpect, os

def ssh():

    # Logs into computer through SSH
    ssh_newkey = 'Are you sure you want to continue connecting'
    # my ssh command line
    p=pexpect.spawn('ssh build@10.51.11.10')

    i=p.expect([ssh_newkey,'password:',pexpect.EOF])
    p.sendline("password")
    i=p.expect('-bash-3.2')

    print os.getcwd()
ssh()

Это позволяет мне подключиться к компьютеру через ssh, но когда я запускаю os.getcwd(), pexpect вернул меня к исходному компьютеру. Вы видите, что я хочу подключить ssh к другому компьютеру и использовать их среду, а не перетаскивать мою среду с помощью pexpect. Может кто-нибудь подсказать, как заставить это работать или альтернативным способом.

Спасибо

Ответы [ 2 ]

1 голос
/ 29 апреля 2010

Процесс, который запускает ssh, никогда не покинет компьютер, на котором он запущен. Когда вы запускаете ssh на другом компьютере, вы запускаете новый процесс там . Этот процесс - совершенно отдельная вещь, отдельная программа для запуска. Если вы хотите что-то сделать на удаленном компьютере, вам нужно либо отправить команды для выполнения через соединение, либо скопировать программу, которую вы хотите запустить, и выполнить ее удаленно.

0 голосов
/ 30 апреля 2010

Ваш экземпляр на другой машине - p. p.sendline, что вы хотите на другой машине и p.expect результат. в изложенном случае

p.sendline("pwd && hostname")
p.expect("-bash-3.2") # although its better to set the prompt yourself so that this can be ported to any machine
response = p.before
print "received response [[" + response + "]]"

Попробуй это. Также попробуйте модуль pxssh, чтобы использовать ssh с python. Этот модуль использует pexpect и содержит все методы, чтобы сделать именно то, что вы хотите здесь

...