Как запустить скрипт Python удаленно через SSH на машине Windows

Как запустить скрипт Python удаленно через SSH на машине Windows

Я пишу приложение с серверно-клиентским типом фреймворка. Для реализации логики,

  1. Мне нужно перенести заархивированную папку на сервер Windows,
  2. распакуйте папку и
  3. затем запустите определенный файл Python в папке.

Я пытаюсь воссоздать шаги вручную, чтобы затем можно было повторить их с помощью библиотек Python (таких как paramikoи zipfileили других библиотек Python)

До сих пор я пробовал следующие тесты, чтобы проверить, смогу ли я надежно запустить скрипт Python с помощью ssh:

  1. Использование OpenSSH из Windows 10: https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH После некоторой настройки я смог копировать файлы с клиентской стороны на сервер с помощью scp. Следующий план состоял в том, чтобы использовать ssh для удаленного запуска определенного файла с помощьюpython filename.py

    Затем cd' в папку и попытался запустить python filename.py. Однако вывода от python.

  2. Затем я попробовал MobaSSH, и проблема была такой же, как и при тесте с OpenSSH от Microsoft. `Fatal Python error: Py_Initialize: can't initialize sys standard streams LookupError: unknown encoding: cp28591

    Текущий поток 0x00000874 (сначала самый последний вызов):`

  3. Из двух экспериментов выше я сначала подумал, что проблема в моей установке python. Поэтому я напрямую вошел в машину и использовал cmdдля запуска того же файла, что и , python filename.pyон запускается и выдает ожидаемые результаты. Так что python отлично работает на машине Windows

  4. Моя следующая гипотеза заключалась в том, что невозможно запустить python, если он запущен через SSH. Чтобы проверить это, я вошел в свою виртуальную машину Ubuntu и провел тот же эксперимент. В этом случае python запустился нормально, без ошибок.

Из этих экспериментов следует, что если я войду в Windows с помощью sshи попытаюсь запустить python, я не смогу его запустить, возможно, из-за причуды python или Windows. Но если я напрямую войду в Windows, я смогу нормально запустить тот же скрипт python. Кроме того, похоже, что ssh работает безупречно в среде Linux.

Мне нужно запустить скрипт python в среде Windows, а не в среде linux из-за некоторых других соображений. Поэтому, хотя запуск тестового файла отлично работал в виртуальной машине ubuntu, я не могу использовать эту среду. .

Есть ли способ запустить скрипт Python при входе через SSH в среде Windows?

решение1

Мне удалось добиться определенного успеха в следующих случаях:

1.После входа в систему запустите cmd.exe

cmd

2.Установите кодовую страницу, например 850 (из cmd.exe)

chcp 850

3. Установите PATH и другие переменные среды (из cmd.exe)

set PATH=c:\Python27;c:\Python27\Scripts;C:\Program Files (x86)\...
set OTHER_VAR=...

Вы можете поместить команды chcp и set в пакетный файл, который запустите после входа в систему.

Чтобы узнать нужные значения, вы можете запустить локальную оболочку cmd на целевой машине или на другой машине Windows, которая достаточно похожа, и выполнить:

chcp
set

Чтобы записать все переменные непосредственно в файл, запустите на целевой машине из локальной оболочки cmd:

set >> myvars.cmd

Его необходимо отредактировать вручную, добавив к каждой строке префикс «set», чтобы создать скрипт, который затем можно будет запустить после удаленного входа в систему.


Можно даже войти в систему, запустить ssh и выполнить скрипт в одной строке или в скрипте bash:

#!/bin/bash
ssh 10.1.1.100 -lwindowsuser 'cmd /K myvars.cmd'

Параметр /K команды cmd выполнит следующую команду (без выхода после ее выполнения).

Связанный контент