0

したがって、Pythonを使用してサーバー上でコマンドを実行したいのですが、そのためには別のボックスを通過する必要があります。サブプロセスで ssh を実行して、最初のボックスに接続します。ただし、2 番目のボックスに入り、そのサブプロセス オブジェクトを介してコマンドを実行する方法がわかりません。

私のサブプロセスステートメント:

command = "ssh servername"
sshConnection = subprocess.Popen(command.split(),stderr=subprocess.PIPE
                                  ,stdout=subprocess.PIPE,stdin=subprocess.PIPE)

私が考えることができる唯一の方法:

どういうわけか、2 つのサブプロセス コマンドのパイプを接続しますか? 最初にSSHトンネルを確立してから、それを介してコマンドを実行しますか? 他のアイデアはありますか?私はこれに間違って近づいていますか?

4

3 に答える 3

0

どうですか:

cmd = "mycmd myarg1 myarg2"
ssh_command = "ssh servername %s" % cmd
sshConnection = subprocess.Popen(ssh_command.split(),stderr=subprocess.PIPE
                                  ,stdout=subprocess.PIPE,stdin=subprocess.PIPE)

もちろん、特殊文字が含まれている場合は、コマンドをシェルエスケープする必要もあります。

私が個人的に気に入っているよりスマートな代替手段は、plumbumを使用することです。リモート (ssh) コマンドをネストできます。

于 2013-04-02T19:36:08.760 に答える
0

サブプロセスで多くの ssh を実行しているので、Fabricを使用することをお勧めします

于 2013-04-02T23:34:41.203 に答える