Windows 시스템에서 SSH를 통해 원격으로 Python 스크립트를 실행하는 방법

Windows 시스템에서 SSH를 통해 원격으로 Python 스크립트를 실행하는 방법

서버 클라이언트 유형의 프레임워크를 사용하여 애플리케이션을 작성 중입니다. 로직을 구현하려면,

  1. 압축된 폴더를 Windows 서버로 전송해야 하는데,
  2. 폴더의 압축을 풀고
  3. 그런 다음 폴더 내에서 특정 Python 파일을 실행하십시오.

paramikoPython 라이브러리(예: 및 zipfile또는 기타 Python 라이브러리)를 사용하여 다시 실행할 수 있도록 단계를 수동으로 다시 만들려고 합니다.

지금까지 SSH를 사용하여 Python 스크립트를 안정적으로 실행할 수 있는지 확인하기 위해 다음 테스트를 시도했습니다.

  1. Windows 10에서 OpenSSH 사용: https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH 일부 구성 후 scp. 다음 계획은 SSH를 사용하여 특정 파일을 원격으로 실행하는 것이었습니다.python filename.py

    그런 다음 폴더에 CD를 넣고 Python filename.py를 실행해 보았습니다. 그러나 python.

  2. 다음으로 MobaSSH를 시도했는데 문제는 Microsoft의 OpenSSH를 사용한 테스트와 동일했습니다. `치명적인 Python 오류: Py_Initialize: sys 표준 스트림을 초기화할 수 없습니다. LookupError: 알 수 없는 인코딩: cp28591

    현재 스레드 0x00000874(가장 최근 호출부터):`

  3. 위의 2가지 실험을 통해 처음에는 Python 설치에 문제가 있다고 생각했습니다. 그래서 저는 컴퓨터에 직접 로그인하고 을(를) 사용하여 cmd동일한 파일을 실행했는데, python filename.py예상한 결과가 실행되고 생성되었습니다. 그래서 Python은 Windows 컴퓨터에서 잘 실행됩니다.

  4. 내 다음 가설은 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 스위치는 다음 명령을 실행합니다(실행 후 종료하지 않음).

관련 정보