Запуск файла .exe на Windows-машине через ssh не работает - PullRequest
0 голосов
/ 18 мая 2018

Мне нужно запустить файл .exe, который принимает 2 аргумента, например:

File.exe Arg1 Arg2

У меня есть установка openSSH, которая работает на обеих машинах.Теперь я пытаюсь запустить файл, используя os.system("ssh remote@ip cd C:/path/to/File;\"./File.exe Arg1 Arg2\"")

Однако ничего не происходит, даже если не было получено никакой ошибки.Все отлично работаетЯ попытался запустить ls, pwd и т. Д., И они работают нормально.Кроме того, я также попытался запустить файл .bat, и он также работает нормально.Чего мне не хватает?

1 Ответ

0 голосов
/ 18 мая 2018

Возможно (но это зависит от интерпретатора команд , например, Unix shell , если ваш локальный компьютер - система Unix, или cmd.exe, если вашлокальный компьютер запускает Windows) ваш аргумент os.system, то есть строка ssh remote@ip cd C:/path/to/File;"./File.exe Arg1 Arg2" анализируется как составная команда, то есть последовательность из двух подкоманд, разделенных точкой с запятой:

ssh remote@ip cd C:/path/to/File

, который просто запускает (бесполезно) cd на ip хосте как пользователь remote и ничего больше

затем

"./File.exe Arg1 Arg2"

, который пытается (и не может) (в вашей локальной системе) запустить исполняемый файл с именем ./File.exe Arg1 Arg2 (файлы могут иметь пробелы, но это уродливо, и вам следует избегать этого)

Возможно, вам следует сделать

os.system("ssh remote@ip 'cd C:/path/to/File; ./File.exe Arg1 Arg2'")

и вы должны проверить код результата os.system

На самом деле, если вы кодируете это ./File.exe, я бы порекомендовал установить какой-нибудь программный флаг дляизменить рабочий каталог (флаг -C make или tar может быть вдохновляющим) в its code.

Помните, что каждый процесс (включая вашу оболочку или интерпретатор команд) имеет свой собственный рабочий каталог.Подробности зависят от операционной системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...