使用Pexpect停止通过SSH返回

时间:2010-04-29 10:50:34

标签: python ssh 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 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()

这允许我进入计算机但是当我运行os.getcwd()时,pexpect已将我送回原始计算机。你看我想要ssh到另一台计算机并使用他们的环境而不是使用pexpect拖动我的环境。任何人都可以建议如何使这种工作或替代方式。

由于

2 个答案:

答案 0 :(得分:1)

启动ssh的过程永远不会离开运行它的计算机。当您ssh到另一台计算机时,您启动一​​个新进程那里。这个过程是完全独立的,一个单独的程序来运行。如果要在远程计算机上执行任何操作,则必须发送命令以通过连接执行,或者复制要运行的程序并远程执行。

答案 1 :(得分: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和python。这个模块使用pexpect,并且其中的所有方法都可以完全按照您的需要进行操作