0

前回の質問も同じでしたが、適切な提案が得られなかったので、再度質問します。

ssh に接続する GUI があります。sshに接続した後、私は何もできないので、スクリプトを介して新しいターミナルを開いて、その「新しいターミナル」で残りの操作を行う(それぞれの出力を表示する)必要があります。

サブプロセスを使用して新しいウィンドウを開くことができるようになりましたが、GUI からアクションを実行しないことがコードの問題である可能性があります。私の問題を解決するのを手伝ってください。

バックエンドには Python とシェル スクリプトを使用し、GUI には wxpython を使用しています。

注: Python とシェル スクリプトを使用したソリューションを探しています。

私のコードは次のとおりです。

import time
import sys
import pexpect
c = pexpect.spawn("ssh -Y -L xxxx:localhost:xxxx user @ host.com")
time.sleep(0.1)
c.expect("[pP]aasword")
c.sendline("xxxxxx")
sub = subprocess.call("xfce4-terminal")
if sub:
   subprocess.call("svn update",shell=True)
time.sleep(0.2)
c.interact()
c.pexpect([user@host.com~]$)
# here after its connects to ssh then command wont be executed
c.sendline("xfce4-terminal")

GUIには、「APPLY」ボタンと5つのラジオボタンがあります。一度に 1 つのラジオ ボタンを選択でき、[適用] ボタンをクリックする必要があります。次に、ssh トンネルに接続し、要求された操作を実行します。現在、ssh_tunnel に接続した後は、どの操作も許可されていません。

4

1 に答える 1

0

実際に発生している問題は、実行中に GUI イベント ループがブロックされないようにする方法ですssh

それを解決できるようにする2つの主要なアプローチがあります。

経由でコマンドを実行するには、ライブラリとしてssh使用することを試みることができます(これは よりも高いレベルです)。fabricparamiko

于 2013-04-24T13:16:13.140 に答える