почему monkeyrunner не работает при запуске с удаленного компьютера?

Мне нужно запустить скрипт monkeyrunner на удаленной машине. Я использую python для его автоматизации и RPyC, чтобы я мог подключаться к другим машинам, все работает в CentOS.

ниже написана команда, которую я использовал:

импорт rpyc

подпроцесс импорта

соединение = rpyc.classic.connect("192.XXX.XXX.XXX",XXXXX)

conn.execute ("напечатать "Привет"")

subprocess.Popen("/opt/android-sdk/tools/monkeyrunner -v ВСЕ

/opt/android-sdk/tools/MYSCRIPT.py", оболочка = True)

и это результат:

не удается открыть указанный файл сценария

Использование: monkeyrunner [опция] script_file

-s IP-адрес MonkeyServer

-p TCP-порт MonkeyServer

-v Уровень ведения журнала MonkeyServer

И тогда я понял, что если вы используете приведенную ниже команду, она запустит команду на вашем компьютере. (пример: команда внутри Popen — «ls», результат, который она вам даст, — это список файлов и каталогов в текущем каталоге LOCALHOST), следовательно, команда неверна.

subprocess.Popen("/opt/android-sdk/tools/monkeyrunner -v ВСЕ

/opt/android-sdk/tools/MYSCRIPT.py", оболочка = True)

и поэтому я заменил код на этот

conn.modules.subprocess.Popen("/opt/android-sdk/tools/monkeyrunner -v ВСЕ

/opt/android-sdk/tools/MYSCRIPT.py", оболочка = 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) File "/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)) File "/usr/lib/python2.4/subprocess .py", строка 542, в init errread, errwrite) Файл "/usr/lib/python2.4/subprocess.py", строка 975, в _execute_child поднять child_exception OSError: [Errno 2] Нет такой файл или каталог

======= Локальное исключение ======== Трассировка (последний последний вызов): Файл "", строка 1, в ? Файл "/usr/lib/python2.4/site-packages/rpyc-3.2.2-py2.4.egg/rpyc/core/netref.py", строка 196, в call 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) File "/usr/lib/python2.4/site-packages/rpyc-3.2.2-py2.4.egg/rpyc/core/protocol.py", строка 438, в sync_request поднять объект OSError: [Errno 2] Нет такого файла или каталога

Я думаю, что он не может запустить файл, потому что у меня нет доступа администратора (поскольку я не указал имя пользователя и пароль удаленной машины)?

Помощь!


person srh snl    schedule 25.09.2012    source источник
comment
Почему бы просто не использовать $ ssh user@server /opt/android-sdk/tools/monkeyrunner -v ALL /opt/android-sdk/tools/MYSCRIPT.py   -  person Diego Torres Milano    schedule 26.09.2012


Ответы (2)


Как я вижу, вы уже подключены

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)
person Laser    schedule 25.09.2012
comment
это все еще не работает, результат тот же, что и с первым набором команд, которые я пробовал. - person srh snl; 25.09.2012
comment
У вас действительно есть этот файл сценария на удаленной машине? - person Laser; 25.09.2012
comment
да. Вручную проверял несколько раз. Я использовал команду find и locate, чтобы узнать, способна ли она найти файл на удаленной машине, однако эти команды также выдают мне сообщения об ошибках. - person srh snl; 25.09.2012

Использование этой функции для запуска monekyrunner не работает, хотя запуск ls, pwd работает нормально.

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

Кусок кода ниже решил мою проблему:

импорт rpyc

подпроцесс импорта, ОС

соединение = rpyc.classic.connect("192.XXX.XXX.XXX",XXXXX)

conn.execute ("напечатать "Привет"")

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

Надеюсь, это поможет тем, кто испытывает ту же проблему, что и моя.

person srh snl    schedule 26.09.2012