如何在 Windows 機器上透過 SSH 遠端執行 python 腳本

如何在 Windows 機器上透過 SSH 遠端執行 python 腳本

我正在編寫一個具有伺服器客戶端類型框架的應用程式。為了實現邏輯,

  1. 我需要將壓縮資料夾傳輸到 Windows 伺服器,
  2. 解壓縮資料夾並
  3. 然後運行該資料夾中的某個 python 檔案。

我正在嘗試手動重新建立這些步驟,以便我可以使用 python 庫(例如和paramiko/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,問題與使用微軟的OpenSSH測試相同。 `致命Python錯誤:Py_Initialize:無法初始化系統標準流LookupError:未知編碼:cp28591

    當前線程 0x00000874(最近調用最先):`

  3. 從上面2個實驗來看,我一開始以為是我的python安裝有問題。所以我直接登入機器,並使用 cmd運行與 , 相同的文件,python filename.py它確實運行並產生預期的輸出。所以python在Windows機器上運作得很好

  4. 我的下一個假設是,如果透過 SSH 運行,則不可能運行 python。為了測試這一點,我登入我的 ubuntu 虛擬機,並做了同樣的實驗。在這種情況下,python 運作良好,沒有錯誤。

從這些實驗來看,似乎如果我使用 登入 Windowsssh並嘗試執行 python,我可能無法運行它,可能是因為 python 或 Windows 的怪癖。但如果我直接登入 Windows,我可以很好地運行相同的 python 腳本。此外,看起來 ssh 在 Linux 環境中確實可以完美地運作。

由於其他一些考慮,我確實需要在 Windows 環境中執行 python 腳本,而不是 Linux 環境。因此,儘管在 ubuntu 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 shell 並執行:

chcp
set

若要將所有變數直接寫入從本機 cmd shell 在目標電腦上執行的檔案:

set >> myvars.cmd

必須手動編輯此內容,在每行前面新增“set”,以建立腳本,然後可以在遠端登入後執行。


甚至可以在一行或 bash 腳本中登入、啟動 ssh 並執行腳本:

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

cmd 的 /K 開關將執行以下命令(運行後不退出)。

相關內容