2

リモート マシンで monkeyrunner スクリプトを実行する必要があります。私はpythonを使用して自動化し、RPyCを使用して他のマシンに接続できるようにしています。すべてがCentOSで実行されています。

以下は、私が使用したコマンドです。

rpycをインポート

サブプロセスのインポート

conn = rpyc.classic.connect("192.XXX.XXX.XXX",XXXXX)

conn.execute (「印刷 'こんにちは'」)

subprocess.Popen("/opt/android-sdk/tools/monkeyrunner -v ALL

/opt/android-sdk/tools/MYSCRIPT.py", shell=True)

これが結果です。

指定されたスクリプト ファイルを開けません

使用法:monkeyrunner [オプション] script_file

-s MonkeyServer IP アドレス

-p MonkeyServer TCP ポート

-v MonkeyServer ログレベル

そして、以下のコマンドを使用すると、マシンでコマンドが実行されていることに気付きました。(例: Popen 内のコマンドは "ls" です。結果として、LOCALHOST の現在のディレクトリにあるファイルとディレクトリのリストが表示されます)。したがって、コマンドは間違っています。

subprocess.Popen("/opt/android-sdk/tools/monkeyrunner -v ALL

/opt/android-sdk/tools/MYSCRIPT.py", shell=True)

だから私はコードをこれに置き換えました

conn.modules.subprocess.Popen("/opt/android-sdk/tools/monkeyrunner -v ALL

/opt/android-sdk/tools/MYSCRIPT.py", shell=True)

そして、このエラーメッセージを教えてください

======= リモート トレースバック ======= トレースバック (最新の呼び出しが最後): ファイル "/usr/lib/python2.4/site-packages/rpyc-3.2.2-py2.4.egg /rpyc/core/protocol.py"、300 行目、_dispatch_request res = self._HANDLERS[handler](self, *args) ファイル"/usr/lib/python2.4/site-packages/rpyc-3.2.2- py2.4.egg/rpyc/core/protocol.py"、532 行目、_handle_call で self._local_objects[oid](*args, **dict(kwargs)) を返す ファイル "/usr/lib/python2.4/subprocess .py", line 542, in init errread, errwrite) File "/usr/lib/python2.4/subprocess.py", line 975, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory

======= ローカル例外 ======== トレースバック (最新の呼び出しが最後): ファイル ""、1 行目、? ファイル「/usr/lib/python2.4/site-packages/rpyc-3.2.2-py2.4.egg/rpyc/core/netref.py」、196 行目、コール return syncreq(_self, consts.HANDLE_CALL, args, kwargs) ファイル "/usr/lib/python2.4/site-packages/rpyc-3.2.2-py2.4.egg/rpyc/core/netref.py"、71 行目、syncreq return conn.sync_request( handler, oid, *args) ファイル "/usr/lib/python2.4/site-packages/rpyc-3.2.2-py2.4.egg/rpyc/core/protocol.py"、438 行目、sync_request で obj を発生させますOSError: [Errno 2] そのようなファイルまたはディレクトリはありません

管理者アクセス権がないため (リモート マシンのユーザー名とパスワードを入力しなかったため)、ファイルを実行できないのではないかと考えています。

ヘルプ!

4

2 に答える 2

0

この関数を使用して monekyrunner を実行すると、ls、pwd は正常に動作しますが、動作しません。

conn.modules.subprocess.Popen("/opt/android-sdk/tools/monkeyrunner -v ALL
/opt/android-sdk/tools/MYSCRIPT.py", shell=True)

以下のコードのチャンクは私の問題を解決しました:

rpycをインポート

サブプロセスのインポート、os

conn = rpyc.classic.connect("192.XXX.XXX.XXX",XXXXX)

conn.execute (「印刷 'こんにちは'」)

conn.modules.os.popen("monkeyrunner -v ALL MYSCRIPT.py",)

これが私と同じ問題を経験している人に役立つことを願っています.

于 2012-09-26T02:08:37.933 に答える
0

ご覧のとおり、すでに接続されています

conn = rpyc.classic.connect("192.XXX.XXX.XXX",XXXXX)
conn.execute ("print 'Hello'")

次のコマンドを使用してみてください:

subprocess.Popen("/opt/android-sdk/tools/monkeyrunner 
/opt/android-sdk/tools/MYSCRIPT.py", shell=True)

それ以外の:

subprocess.Popen("/opt/android-sdk/tools/monkeyrunner -v ALL
/opt/android-sdk/tools/MYSCRIPT.py", shell=True)
于 2012-09-25T07:24:41.347 に答える