Verwenden Sie Python 3 Subprocess.run () im CGI-Skript

Phänomen

Schreiben Sie den folgenden Code und speichern Sie ihn in / usr / lib / cgi-bin mit der Erweiterung .cgi.


import subprocess
print('Content-type: text/html¥n')

print(subprocess.run('hostname'))

Wenn ich über einen Browser auf dieses CGI-Skript zugreife, wird ein "500 Internal Server Error" angezeigt.

Im Apache-Protokoll

malformed header from script

Wird ausgegeben.

Ursache und Lösung

subprocess.run () gibt das Ergebnis nicht an die Standardausgabe aus, es sei denn, nichts ist angegeben.

Standardmäßig wird keine Standardausgabe oder Standardfehlerausgabe erfasst. Wenn Sie es erfassen möchten, übergeben Sie PIPE in den Argumenten stdout oder / und stderr.

https://docs.python.org/ja/3.5/library/subprocess.html

Wenn im Argument "stdout" "subprocess.PIPE" angegeben ist, wird das Ergebnis in die Standardausgabe ausgegeben. Gehen Sie wie folgt vor, wenn Sie "subprocess.run ()" in einem CGI-Skript verwenden.

result = subprocess.run('hostname', stdout=subprocess.PIPE)
print(result.stdout)


Recommended Posts

Verwenden Sie Python 3 Subprocess.run () im CGI-Skript
Ein Memorandum, das Sie häufig mit Selen in Python verwenden
Führen Sie ein mehrzeiliges Skript in einem PDB aus
Verwenden Sie print in Python2 lambda expression
Verwenden Sie ein in PySpark geschultes Scikit-Lernmodell
Verwenden Sie Django aus einem lokalen Python-Skript
Lassen Sie uns das Bash-Skript in Java ausführen
Verwenden Sie WebDAV in einer Portable Docker-Umgebung
Verwenden Sie den neuesten Pip in einer virtuellen Umgebung
Rufen Sie Python-Skripte aus Embedded Python in C ++ / C ++ auf
Verwenden Sie eine benutzerdefinierte Fehlerseite mit Python / Tornado
Verwenden Sie eine kostenlose GPU in Ihrer Lieblingsumgebung
Ich habe ein Skript erstellt, um ein Snippet in README.md einzufügen
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
Was ist in dieser Variablen (wenn das Python-Skript ausgeführt wird)?
Praktisch, um Matplotlib-Unterzeichnungen in for-Anweisungen zu verwenden
Verwenden Sie communic (), wenn Sie eine Ausgabe in einem Python-Unterprozess empfangen
Verwenden Sie Sudachipys gelerntes word2vec in einer Umgebung mit wenig Speicher
Verwenden Sie config.ini mit Python
Verwenden Sie DataFrame in Java
Verwenden Sie Mean mit DataFrame
Verwenden Sie Valgrind mit Python
Property Decorator verwenden?
diktieren in diktieren Macht ein Diktat ein Diktat
Verwenden Sie ujson in Anfragen
Verwenden Sie den Profiler in Python
Verwendung der Methode __call__ in der Python-Klasse
Erstellen wir ein Skript, das sich bei Ideone.com in Python registriert.
Hinweise zum Einbetten der Skriptsprache in Bash-Skripte
Hinweis 2 zum Einbetten der Skriptsprache in ein Bash-Skript
Verwenden Sie MeCab, um schlampige Sätze "langsam" zu übersetzen.
Verarbeiten Sie die Dateien im Ordner in der Reihenfolge mit dem Shell-Skript
Ich habe ein Skript geschrieben, um eine beliebte Seite in Japan zu bekommen
Führen Sie einen Befehl in Go wie Pythons subprocess.call aus (~, shell = True).
Eine Reihe von Skriptdateien, die Wordcloud mit Python3 ausführen
Ich habe ein Skript geschrieben, das das Bild in zwei Teile teilt
Sollte ich dies verwenden, um meine Klasse in einer statischen Methode wie @classmethod in Python in ES2015 zu referenzieren?