Maison >développement back-end >Tutoriel Python >Comment puis-je utiliser en toute sécurité Pipes avec le module « sous-processus » de Python ?

Comment puis-je utiliser en toute sécurité Pipes avec le module « sous-processus » de Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-15 03:24:16760parcourir

How Can I Securely Use Pipes with Python's `subprocess` Module?

Utiliser un sous-processus avec Pipes

L'utilisation de subprocess.check_output() peut être un outil précieux pour regrouper des commandes ensemble, permettant un traitement complexe. Cependant, l'utilisation de l'argument shell=True pour faciliter le transfert est fortement déconseillée en raison de problèmes de sécurité.

Pour une approche plus sécurisée et plus stable, envisagez de créer des processus distincts pour chaque commande et de rediriger la sortie entre eux. Voici un exemple :

import subprocess

# Create a subprocess for the ps command
ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE)

# Create a subprocess for the grep command
output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout)

# Wait for the ps process to finish
ps.wait()

# Process the grep output (if necessary)

Vous pouvez également éviter complètement le piping en utilisant str.find pour rechercher "process_name" dans la sortie de subprocess.check_output(('ps', '-A')) :

import subprocess

# Run the ps command and capture the output
output = subprocess.check_output(('ps', '-A'))

# Search for "process_name" in the output
if "process_name" in output:
    # Take appropriate action

En adhérant à ces directives, vous pouvez utiliser efficacement les tuyaux avec le module de sous-processus tout en maintenant la sécurité et stabilité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn