如何在 Windows 机器上通过 SSH 远程运行 Python 脚本

如何在 Windows 机器上通过 SSH 远程运行 Python 脚本

我正在编写一个具有服务器客户端类型框架的应用程序。为了实现逻辑,

  1. 我需要将压缩文件夹传输到 Windows 服务器,
  2. 解压文件夹并
  3. 然后运行文件夹内的某个 python 文件。

我正在尝试手动重新创建这些步骤,以便我可以使用 python 库(例如paramikozipfile或其他 python 库)重做它

到目前为止,我已经尝试了以下测试来检查是否可以使用 ssh 可靠地运行 python 脚本:

  1. 在 Windows 10 中使用 OpenSSH: https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH 经过一些配置后,我能够使用 将文件从客户端复制到服务器scp。下一个计划是使用 ssh 远程运行特定文件,使用python filename.py

    然后进入文件夹并尝试运行 python filename.py。但是,没有输出python

  2. 接下来我尝试了 MobaSSH,问题与使用微软的 OpenSSH 测试时一样。`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. 我的下一个假设是,如果通过 SSH 运行,则无法运行 Python。为了测试这一点,我登录了我的 ubuntu VM,并进行了相同的实验。在这种情况下,Python 运行良好,没有错误。

从这些实验来看,如果我使用 登录 Windows ssh,并尝试运行 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 机器上启动一个本地 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 开关将运行以下命令(运行后不退出)。

相关内容