
Python es un lenguaje de programación versátil y fácil de usar que se destaca en la manipulación, el análisis y la generación de informes de cadenas. Por esta razón, muchos administradores de sistemas usan Python para las tareas diarias, pero cambian a Bash para tareas familiares y, a menudo, básicas. Es una buena combinación, pero ¿por qué usar Bash para algunas tareas y Python para otras cuando se pueden usar ambos?
[ Download A sysadmin’s guide to Bash scripting. ]
Usar Bash para ejecutar tareas repetitivas o comandos del sistema de bajo nivel, y luego usar Python para analizar o procesar más la salida en un formato legible es una excelente manera de aprovechar las ventajas de ambos lenguajes. Afortunadamente, el módulo de subprocesos de Python facilita la integración de Bash en sus scripts de Python.
Para ejecutar los ejemplos de esta guía, debe tener la Python 3.5 o superiorEl módulo .subprocess es una biblioteca estándar en Python y no requiere instalación manual.
Conceptos básicos del módulo de subproceso
El módulo de subproceso contiene varios métodos de utilidad para ejecutar comandos Bash.El principal método de subproceso que utilizará es run
. y run
, puede escribir cualquier comando Bash como primer argumento en un método entre comillas simples, dobles o triples. P.ej:
subprocess.run("ls")
Si desea capturar la salida, puede agregar capture_output=True
debate:
subprocess.run("ls", capture_output=True)
Si bien la biblioteca de subprocesos tiene muchos otros métodos útiles, esta guía se enfoca solo en run
método.
NOTA: Si está utilizando macOS, debe agregar shell=True
argumento run
método.
Para obtener más información sobre el módulo de subprocesos, visite documento.
Cuándo usar el módulo de subproceso de Python
El módulo de subprocesos funciona mejor cuando se ejecutan comandos Bash simples en un script de Python. El módulo de subproceso está limitado a comandos Bash más complejos, o si necesita crear un nuevo shell.
Por ejemplo, para obtener un rsh
Usar comandos de subprocesos es muy difícil. Si tiene un comando Bash largo que desea ejecutar en un subproceso, puede encerrarlo entre comillas triples. P.ej:
subprocess.run('''ls -l | awk -v OFS='\t' 'BEGIN { printf "%s\t%s\n", "Name", "Size"} {print $9,$5}''')
Sin embargo, la mejor manera de ejecutar comandos Bash complejos es crear un script Bash con sus comandos y luego usar el módulo de subproceso para ejecutarlo. Según lo que desee hacer, puede capturar la salida y continuar procesándola en Python.
proc = subprocess.run(["./sample_Bash.sh"], shell=True, capture_output=True)
pitón práctico
Python y Bash son una gran combinación para el administrador de sistemas ocupado. Cubrí los conceptos básicos del módulo de subprocesos en este artículo. En mi próximo artículo, demostraré algunas formas prácticas en las que puede usar Python y Bash juntos en su sistema.
[ Learn how to manage your Linux environment for success. ]