我正在尝试将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拖动我的环境。任何人都可以建议如何使这种工作或替代方式。
由于
答案 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,并且其中的所有方法都可以完全按照您的需要进行操作