Utilisez Python 3 Subprocess.run () dans le script CGI

phénomène

Écrivez le code suivant et enregistrez-le dans / usr / lib / cgi-bin avec l'extension .cgi.


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

print(subprocess.run('hostname'))

Lorsque j'accède à ce script CGI depuis un navigateur, j'obtiens une 500 Internal Server Error.

Dans le journal Apache,

malformed header from script

Est sortie.

Cause et solution

subprocess.run () ne sort pas le résultat vers la sortie standard à moins que rien ne soit spécifié.

Par défaut, il ne capture pas la sortie standard ou la sortie d'erreur standard. Si vous voulez le capturer, passez PIPE dans les arguments stdout ou / et stderr.

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

Si subprocess.PIPE est spécifié dans l'argument stdout, le résultat sera sorti sur la sortie standard. Lorsque vous utilisez `subprocess.run () 'dans un script CGI, procédez comme suit.

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


Recommended Posts

Utilisez Python 3 Subprocess.run () dans le script CGI
Un mémorandum que vous utiliserez souvent avec Selenium en Python
Exécuter un script multiligne dans un PDB
Utiliser l'impression dans l'expression lambda Python2
Utiliser un modèle scikit-learn formé à PySpark
Utiliser Django à partir d'un script Python local
Lançons le script Bash en Java
Utiliser WebDAV dans un environnement Docker portable
Utilisez le dernier pip dans un environnement virtualenv
Appel de scripts Python à partir de Python intégré en C ++ / C ++
Utilisez une page d'erreur personnalisée avec python / tornado
Utilisez un GPU gratuit dans votre environnement préféré
J'ai fait un script pour mettre un extrait dans README.md
Un mémorandum sur l'utilisation de keras.preprocessing.image de Keras
Que contient cette variable (lorsque le script Python est en cours d'exécution)
Pratique pour utiliser les sous-graphiques matplotlib dans l'instruction for
Utilisez communiquer () lors de la réception de la sortie dans un sous-processus Python
Utilisez le mot2vec appris de Sudachipy dans un environnement à faible mémoire
Utilisez config.ini avec Python
Utiliser DataFrame en Java
Utiliser Mean avec DataFrame
Utiliser Valgrind avec Python
Utilisez Property Decorator?
dict in dict Transforme un dict en dict
Utiliser ujson dans les requêtes
Utiliser le profileur en Python
Comment utiliser la méthode __call__ dans la classe Python
Créons un script qui s'enregistre avec Ideone.com en Python.
Remarques sur l'intégration du langage de script dans les scripts bash
Remarque 2 pour intégrer le langage de script dans un script bash
Utilisez MeCab pour traduire des phrases bâclées de manière "lente".
Traitez les fichiers du dossier dans l'ordre avec le script shell
J'ai écrit un script pour obtenir un site populaire au Japon
Exécutez une commande dans Go comme subprocess.call de Python (~, shell = True)
Un ensemble de fichiers de script qui font wordcloud avec Python3
J'ai écrit un script qui divise l'image en deux
Dois-je l'utiliser pour faire référence à ma classe dans une méthode statique comme @classmethod en Python dans ES2015?