En el post de hoy te mostraré cómo ejecutar un comando de Linux desde el lenguaje de programación Python. Es decir, invocar un comando de la terminal de Linux pero desde Python.
Algo así como ejecutar o iniciar un programa desde Python, llamando a ejecutables o binarios de Linux.
El problema
Mi problema era que no se debe invocar directamente al comando, sino invocar a bash
, de manera similar a cuando se invoca a cmd
en Windows.
Lo que yo quería hacer era simple: ejecutar un comando de la terminal de Linux desde Python, tal y como si lo hiciera escribiendo.
Aquí te contaré lo que me funcionó por si te ocurre algo similar.
Ejecutar comando en bash desde Python
Al final terminé usando subprocess.Popen
. El comando que quería ejecutar era:
gpionext start
Y normalmente pensaríamos que se invoca así:
subprocess.Popen(["/usr/bin/gpionext", "start"])
Ya que estamos invocando a gpionext
, que está en /usr/bin/
, pasándole el argumento start
. Pero no, así no funciona.
La forma correcta es:
subprocess.Popen(["bash","/usr/bin/gpionext", "start"])
La única diferencia es que ahora estamos invocando a bash
, pasándole el nombre del ejecutable y sus argumentos. Con esto ya no me generaba ningún error.
Y así es como podemos invocar comandos de Linux desde Python. Puede que a ti te funcione esto o te funcione algún otro método, puedes leer más en el sitio oficial.
Finalmente te dejo con más posts de Python.