
서버 클라이언트 유형의 프레임워크를 사용하여 애플리케이션을 작성 중입니다. 로직을 구현하려면,
- 압축된 폴더를 Windows 서버로 전송해야 하는데,
- 폴더의 압축을 풀고
- 그런 다음 폴더 내에서 특정 Python 파일을 실행하십시오.
paramiko
Python 라이브러리(예: 및 zipfile
또는 기타 Python 라이브러리)를 사용하여 다시 실행할 수 있도록 단계를 수동으로 다시 만들려고 합니다.
지금까지 SSH를 사용하여 Python 스크립트를 안정적으로 실행할 수 있는지 확인하기 위해 다음 테스트를 시도했습니다.
Windows 10에서 OpenSSH 사용: https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH 일부 구성 후
scp
. 다음 계획은 SSH를 사용하여 특정 파일을 원격으로 실행하는 것이었습니다.python filename.py
그런 다음 폴더에 CD를 넣고 Python filename.py를 실행해 보았습니다. 그러나
python
.다음으로 MobaSSH를 시도했는데 문제는 Microsoft의 OpenSSH를 사용한 테스트와 동일했습니다. `치명적인 Python 오류: Py_Initialize: sys 표준 스트림을 초기화할 수 없습니다. LookupError: 알 수 없는 인코딩: cp28591
현재 스레드 0x00000874(가장 최근 호출부터):`
위의 2가지 실험을 통해 처음에는 Python 설치에 문제가 있다고 생각했습니다. 그래서 저는 컴퓨터에 직접 로그인하고 을(를) 사용하여
cmd
동일한 파일을 실행했는데,python filename.py
예상한 결과가 실행되고 생성되었습니다. 그래서 Python은 Windows 컴퓨터에서 잘 실행됩니다.내 다음 가설은 SSH를 통해 실행하면 Python을 실행할 수 없다는 것이었습니다. 이를 테스트하기 위해 우분투 VM에 로그인하고 동일한 실험을 수행했습니다. 이 경우 Python은 오류 없이 잘 실행되었습니다.
이러한 실험에 따르면 를 사용하여 Windows에 로그인 ssh
하고 Python을 실행하려고 하면 Python이나 Windows의 특성 때문에 실행할 수 없는 것 같습니다. 하지만 Windows에 직접 로그인하면 동일한 Python 스크립트를 정상적으로 실행할 수 있습니다. 또한 ssh는 Linux 환경에서 완벽하게 작동하는 것 같습니다.
다른 고려 사항으로 인해 Linux 환경이 아닌 Windows 환경에서 Python 스크립트를 실행해야 합니다. 따라서 테스트 파일을 실행하면 우분투 VM에서 제대로 작동했지만 해당 환경을 사용할 수 없습니다. .
Windows 환경에서 SSH를 통해 로그인할 때 Python 스크립트를 실행하는 방법이 있습니까?
답변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 명령을 넣을 수 있습니다.
원하는 값을 찾으려면 대상 시스템이나 충분히 유사한 다른 Windows 시스템에서 lokal cmd 쉘을 시작하고 다음을 실행할 수 있습니다.
chcp
set
로컬 cmd 셸에서 대상 컴퓨터의 파일 실행에 모든 변수를 직접 쓰려면 다음을 수행하세요.
set >> myvars.cmd
원격으로 로그인한 후 실행할 수 있는 스크립트를 생성하려면 각 줄 앞에 'set'을 추가하여 수동으로 편집해야 합니다.
로그인하고 ssh를 시작하고 한 줄 또는 bash 스크립트에서 스크립트를 실행하는 것도 가능합니다.
#!/bin/bash
ssh 10.1.1.100 -lwindowsuser 'cmd /K myvars.cmd'
cmd의 /K 스위치는 다음 명령을 실행합니다(실행 후 종료하지 않음).