2012-03-19 7 views
0

現在、私はpython 3.2を使用しており、Windowsで3つのコマンドプロンプトのインスタンスを生成するコードを書きたいと思っていました。 Plink(パテ)を使用してこれらのコマンドプロンプトのそれぞれの別のサーバーにアクセスし、これらのコマンドプロンプトで時間のかかるプログラムを並行して実行する必要があります。コマンドプロンプトのインスタンスを3つ作成することはできましたが、これらのプロンプトにコマンドを送信できませんでした。そうする方法はありますか?この目的のためにマルチプロセッシング/マルチスレッディングを使うべきですか?Windowsでコマンドプロンプトの3つのインスタンスを作成し、各プロンプトにコマンドをPythonを使用して並行して渡す方法

私はコマンドプロンプトを作成するために次のコードを書いています。これらのプロンプトのそれぞれにコマンドを渡す方法はありますか?

def Plink(): 
    name = multiprocessing.current_process().name 
    proc = subprocess.Popen("C:\\Windows\\System32\\cmd.exe") 

if __name__ == '__main__': 
    Plink_1 = multiprocessing.Process(name='Plink 1', target=Plink) 
    Plink_2 = multiprocessing.Process(name='Plink 2', target=Plink) 
    Plink_3 = multiprocessing.Process(name='Plink 3', target=Plink) 

    Plink_1.start() 
    Plink_2.start() 
    Plink_3.start() 

答えて

1

ええ、何ですか?あなたが何をしたいか

import subprocess 
def make_shells(n): 
    for i in range(n): 
     subprocess.Popen(["cmd.exe"]) 

は、一般的に「マルチプロセッシング」と呼ばれているものではありません... Paramiko

を使用して

は、ここでは、リモートに接続するためにparamikoを使用する方法ですSSHサーバーを起動し、コマンドを実行します。

import paramiko 
def run_ls_la(): 
    client = paramiko.SSHClient() 
    client.connect("myssh.server.org", username="foo", password="bar") 
    stdin, stdout, stderr = client.exec_command("ls -la") 
    print(stdout.read()) 

また、公開鍵認証を使用してドキュメントをチェックすることもできます。

+0

ちょっとしたデバッグの後、最初の問題の原因が見つかりました。プロンプトがまったく作成されないため、プロンプトにコマンドを渡すことが問題でした。申し訳ありませんが、私はマルチタスキング/マルチプロセッシングにはかなり新しいです。私は、より明確にするために質問を修正しました。あなたのコメントありがとう – Pulimon

+0

@プリモン:あなたは間違った方向からこれに近づいており、それも間違っています。あなたがやっていること全てが新しいプロセスを開始しているならば、 'multiprocessing'パッケージを使う必要はありません - とにかくプロセスは始まります! 'subprocess.Popen'を3回呼び出すだけです。さらに、あなたがそれで達成しようとしていることは、むしろ混乱しています。あなたがしたいことは、リモートサーバーへのSSH接続を開いてプログラムを実行することです。ですから、[paramiko](http://www.lag.net/paramiko/)のようなPython用のSSH2実装を入手し、それを使用してください。 – cha0site

+1

情報ありがとうございます。しかし、paramikoはpython 3.xで動作しますか?彼らのサイトはPython 2.2+を指定していますが、Python 3の具体的な記述は見つかりませんでした。( – Pulimon

関連する問題