So führen Sie ein Python-Skript remote über SSH auf einem Windows-Computer aus

So führen Sie ein Python-Skript remote über SSH auf einem Windows-Computer aus

Ich schreibe eine Anwendung mit einem Server-Client-Framework. Um die Logik zu implementieren,

  1. Ich muss einen komprimierten Ordner auf einen Windows-Server übertragen.
  2. entpacken Sie den Ordner und
  3. Führen Sie dann eine bestimmte Python-Datei im Ordner aus.

Ich versuche, die Schritte manuell neu zu erstellen, damit ich sie dann mit Python-Bibliotheken (wie paramikound zipfileoder anderen Python-Bibliotheken) wiederholen kann.

Bisher habe ich die folgenden Tests ausprobiert, um zu prüfen, ob ich ein Python-Skript zuverlässig per SSH ausführen kann:

  1. Verwenden von OpenSSH unter Windows 10: https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH Nach einiger Konfiguration konnte ich Dateien von der Clientseite auf den Server kopieren, indem ich scp. Der nächste Plan war, SSH zu verwenden, um eine bestimmte Datei remote auszuführen, indem ichpython filename.py

    Dann wechselte ich per CD in den Ordner und versuchte, python filename.py auszuführen. Es gab jedoch keine Ausgabe von python.

  2. Als nächstes habe ich MobaSSH ausprobiert und das Problem war das gleiche wie beim Test mit OpenSSH von Microsoft. `Schwerwiegender Python-Fehler: Py_Initialize: kann Sys-Standard-Streams nicht initialisieren LookupError: unbekannte Kodierung: cp28591

    Aktueller Thread 0x00000874 (letzter Aufruf zuerst):`

  3. Aufgrund der beiden oben genannten Experimente dachte ich zunächst, dass es ein Problem mit meiner Python-Installation gab. Also habe ich mich direkt bei der Maschine angemeldet und cmddieselbe Datei wie ausgeführt. python filename.pySie wird ausgeführt und erzeugt die erwarteten Ausgaben. Python läuft also auf der Windows-Maschine einwandfrei.

  4. Meine nächste Hypothese war, dass es unmöglich ist, Python über SSH auszuführen. Um dies zu testen, habe ich mich bei meiner Ubuntu-VM angemeldet und dasselbe Experiment durchgeführt. In diesem Fall lief Python einwandfrei und ohne Fehler.

Aus diesen Experimenten geht hervor, dass ich sshPython nicht ausführen kann, wenn ich mich mit anmelde und versuche, es auszuführen, möglicherweise aufgrund einer Eigenart von Python oder Windows. Wenn ich jedoch direkt bei Windows angemeldet bin, kann ich dasselbe Python-Skript problemlos ausführen. Darüber hinaus scheint SSH in einer Linux-Umgebung einwandfrei zu funktionieren.

Ich muss das Python-Skript aus anderen Gründen in einer Windows-Umgebung ausführen, nicht in einer Linux-Umgebung. Obwohl das Ausführen der Testdatei in der Ubuntu-VM problemlos funktioniert hat, kann ich diese Umgebung nicht verwenden. .

Gibt es eine Möglichkeit, ein Python-Skript auszuführen, wenn man in einer Windows-Umgebung über SSH angemeldet ist?

Antwort1

Mit Folgendem hatte ich einigen Erfolg:

1. Nach dem Einloggen starten Sie cmd.exe

cmd

2.Stellen Sie eine Codepage ein, zum Beispiel 850 (innerhalb von cmd.exe)

chcp 850

3. Legen Sie den Pfad und andere Umgebungsvariablen fest (innerhalb von cmd.exe).

set PATH=c:\Python27;c:\Python27\Scripts;C:\Program Files (x86)\...
set OTHER_VAR=...

Sie können die Befehle chcp und set in eine Batchdatei einfügen, die Sie nach der Anmeldung ausführen.

Um die gewünschten Werte herauszufinden, können Sie eine lokale cmd-Shell auf dem Zielcomputer oder auf einem anderen Windows-Computer, der ähnlich genug ist, starten und Folgendes ausführen:

chcp
set

Um alle Variablen direkt in eine Datei zu schreiben, führen Sie diese auf dem Zielcomputer von einer lokalen Befehlsshell aus:

set >> myvars.cmd

Dies muss manuell bearbeitet werden, um jeder Zeile ein „Set“ voranzustellen und so ein Skript zu erstellen, das Sie nach der Remote-Anmeldung ausführen können.


Es ist sogar möglich, sich anzumelden, SSH zu starten und das Skript in einer Zeile oder in einem Bash-Skript auszuführen:

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

Der Schalter /K von cmd führt den folgenden Befehl aus (ohne Beenden nach der Ausführung).

verwandte Informationen