Использование MobaXterm в качестве оболочки Linux в Windows

#python #windows #mobaxterm

#python #Windows #mobaxterm

Вопрос:

У меня есть скрипт на Python, который использует subprocess для вызова MobaXterm и использует его для запуска команды на мой сервер через SSH. Скрипт отлично работает при использовании подсистемы Windows для Linux (WSL), но дает сбой при использовании Moba. Это код:

 import subprocess

moba_path = "C:Program Files (x86)MobatekMobaXtermMobaXterm.exe"
subprocess.run(f'{moba_path} -exec ssh my_server "mkdir test_dir"')
  

Он открывает окно MobaXterm, но не показывает никаких признаков выполнения команды. Я проверил, и команда не была выполнена (папка не была создана).

Есть идеи?

Комментарии:

1. попробуйте это, потому что это работает для моего подпроцесса. Popen([«ssh», «%s» % HOST, COMMAND], shell=False, стандартный вывод=подпроцесс. КАНАЛ, stderr= подпроцесс. КАНАЛ)

2. Это использует только «ssh», установленный в моей системе Windows. Дело в том, что моя конфигурация ssh очень запутанная, и я бы предпочел использовать Moba или WSL (какую-нибудь систему Linux), поскольку я уже знаю их конфигурации.

Ответ №1:

Итак, я нашел способ выполнять свои команды с помощью Moba программным способом, используя -newtab команду. Запускается новая вкладка, на которой затем выполняется указанная команда.

 import subprocess

moba_path = "C:Program Files (x86)MobatekMobaXtermMobaXterm.exe"
subprocess.run(f'{moba_path} -newtab ssh my_server "mkdir test_dir"')