Я пишу приложение с фреймворком серверного типа. Чтобы реализовать логику,
Я пытаюсь воссоздать шаги вручную, чтобы затем повторить их, используя библиотеки python (например, paramiko
и zipfile
или другие библиотеки Python)
До сих пор я пробовал следующие тесты, чтобы проверить, могу ли я надежно запустить скрипт python с помощью ssh:
Использование OpenSSH из Windows 10: https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH После некоторой настройки я смог скопировать файлы со стороны клиента на сервер, используя scp
. Следующим планом было использовать ssh для удаленного запуска определенного файла с помощью python filename.py
Затем cd'ed в папку и попытался запустить python filename.py. Однако выхода из python
.
Затем я попробовал MobaSSH, и проблема была такая же, как и в тесте с OpenSSH от Microsoft. `Неустранимая ошибка Python: Py_Initialize: невозможно инициализировать стандартные потоки sys LookupError: неизвестная кодировка: cp28591
Текущий поток 0x00000874 (сначала последний вызов): `
Из двух вышеупомянутых экспериментов я сначала подумал, что проблема с моей установкой python. Итак, я напрямую вошел в машину и использовал cmd
чтобы запустить тот же файл, что и, python filename.py
, он работает и дает ожидаемые результаты. Итак, python отлично работает на машине с Windows
Моя следующая гипотеза заключалась в том, что невозможно запустить python через SSH. Чтобы проверить это, я вошел в свою виртуальную машину ubuntu и проделал тот же эксперимент. В этом случае python работал нормально, без ошибок.
Из этих экспериментов кажется, что если я войду в Windows, используя ssh
, и попробуйте запустить python, я не могу его запустить, возможно, из-за причуды python или Windows. Но если я напрямую вошел в Windows, я могу нормально запустить тот же скрипт python. Кроме того, кажется, что ssh безупречно работает в среде Linux.
Мне нужно запускать скрипт python в среде Windows, а не в среде Linux из-за некоторых других соображений. Таким образом, хотя запуск тестового файла в виртуальной машине ubuntu работал нормально, я не могу использовать эту среду. .
Есть ли способ запустить скрипт Python при входе в систему через SSH в среде Windows?
У меня был некоторый успех со следующим:
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
Это нужно отредактировать вручную, чтобы добавить к каждой строке «набор» для создания сценария, который затем можно будет запустить после удаленного входа в систему.
Можно даже войти в систему, запустить ssh и выполнить сценарий в одной строке или в сценарии bash:
#!/bin/bash
ssh 10.1.1.100 -lwindowsuser 'cmd /K myvars.cmd'
Параметр / K команды cmd запускает следующую команду (без выхода после ее выполнения).