2010-04-29 4 views
0

컴퓨터로 ssh로 pexpect를 사용하려고하지만 원래 컴퓨터로 돌아가고 싶지 않습니다. 내가 가진 코드는 다음과 같습니다이 날 컴퓨터에 ssh를 할 수 있습니다하지만 난 os.getcwd()을 실행할 때 pexpect 원래 컴퓨터에 나를 돌아왔다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 [email protected]') 

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

    print os.getcwd() 
ssh() 

. 다른 컴퓨터에 ssh로 들어가서 pexpect를 사용하여 환경을 드래그하지 않는 환경을 사용하고 싶습니다. 누구나이 방법이나 다른 방법을 얻는 방법을 제안 할 수 있습니까?

감사

답변

1

ssh을 시작하는 과정은 결코이 실행되는 컴퓨터를 떠나려고하지 않습니다. 다른 컴퓨터에 ssh 할 때 새 프로세스를 시작합니다. 이 프로세스는 완전히 별개의 것입니다. 실행해야 할 별도의 프로그램입니다. 원격 컴퓨터에서 아무 것도하지 않으려면 연결을 통해 실행되도록 명령을 보내거나 실행하고 원격으로 실행하려는 프로그램을 복사해야합니다.

+0

@Thomas Wouters - pexpect를 사용하지 않고 다른 컴퓨터로 ssh하고 암호를 입력하는 다른 방법을 알고 있습니까? 감사합니다. – chrissygormley

+0

왜 다른 방법이 필요하다고 생각하는지 잘 모르겠습니다. 어떤 방식 으로든 당신은 똑같은 상황에 처하게 될 것입니다. 그러나 확실히 : 파라미 코 (paramiko)는 이것을 당신에게도시킬 수 있습니다. 여전히 별도의 프로세스로 끝납니다. 그게 어떻게 작동하는지. –

0

다른 컴퓨터에 대한 인스턴스는 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를 사용하십시오. 이 모듈은 pexpect를 사용하며 여기에 원하는 모든 기능을 제공합니다.

관련 문제