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 を実行すると、元のコンピューターに戻りました。pexpect を使用して自分の環境をドラッグするのではなく、別のコンピューターに ssh してその環境を使用したいことがわかります。これを機能させる方法または別の方法を誰でも提案できますか。

ありがとう

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 を試して、python で ssh を使用してください。このモジュールは pexpect を使用しており、ここで必要なことを正確に行うためのすべてのメソッドが含まれています。

于 2010-04-30T10:20:14.297 に答える