我需要在远程计算机上运行monkeyrunner脚本。我正在使用python来自动化它和RPyC以便我可以连接到其他机器,一切都在CentOS中运行。
下面写的是我使用的命令:导入rpyc
导入子流程
conn = rpyc.classic.connect(“192.XXX.XXX.XXX”,XXXXX)
conn.execute(“print'Hello'”)
subprocess.Popen(“/ opt / android-sdk / tools / monkeyrunner -v ALL
/opt/android-sdk/tools/MYSCRIPT.py“,shell = True)
这就是结果:
无法打开指定的脚本文件
用法:monkeyrunner [option] script_file
-s MonkeyServer IP地址
-p MonkeyServer TCP端口
-v MonkeyServer Logging level
然后我意识到如果你使用下面的命令,它会在你的机器上运行命令。 (例如: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中 return self._local_objects [oid](* args,** dict(kwargs))文件“/usr/lib/python2.4/subprocess.py”,第542行, init errread,errwrite)文件“/usr/lib/python2.4/subprocess.py”,第975行,在_execute_child中 raise child_exception OSError:[Errno 2]没有这样的文件或目录
=======本地异常======== Traceback(最近一次调用最后一次):文件“”,第1行,在?文件 “/usr/lib/python2.4/site-packages/rpyc-3.2.2-py2.4.egg/rpyc/core/netref.py” 第196行,致电 返回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]没有这样的文件或目录
我认为它无法运行该文件,因为我没有管理员权限(因为我没有提供远程计算机的用户名和密码)?
帮助!
答案 0 :(得分: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)
答案 1 :(得分:0)
使用此函数运行monekyrunner不起作用,虽然运行ls,pwd工作正常。
conn.modules.subprocess.Popen(“/ opt / android-sdk / tools / monkeyrunner -v ALL
/opt/android-sdk/tools/MYSCRIPT.py“,shell = True)
下面的代码块解决了我的问题:
导入rpyc
import subprocess,os
conn = rpyc.classic.connect(“192.XXX.XXX.XXX”,XXXXX)
conn.execute(“print'Hello'”)
conn.modules.os.popen(“monkeyrunner -v ALL MYSCRIPT.py”,)
希望这对那些遇到与我相同问题的人有所帮助。