0

我正在尝试使用 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 拖动我的环境。任何人都可以建议如何让这个工作或替代方式。

谢谢

4

2 回答 2

1

启动的进程ssh永远不会离开它运行的计算机。当您 ssh 进入另一台计算机时,您会在那里启动一个新进程。这个过程是一个完全独立的东西,一个单独的程序来运行。如果你想在远程机器上做任何事情,你必须要么发送命令通过连接执行,要么复制你想要运行的程序并远程执行它。

于 2010-04-29T10:53:42.540 回答
0

您对另一台机器的实例是您在另一台机器上想要的 ppsendline 并 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 并包含其中的所有方法来完全按照您的意愿进行操作

于 2010-04-30T10:20:14.297 回答