Python 3
Tu pasaporte a sabelotodo de Python. Desde las bases hasta la creación de tu primer programa, este curso...
Te contamos los motivos por los que Python 3 es un lenguaje de programación muy interesante para los administradores de sistemas.
Tabla de contenidos
Tradicionalmente en las empresas, los equipos de desarrollo y de administradores de sistemas han sido dos equipos de trabajo que han estado siempre separados y los objetivos de unos y de otros eran distintos.
El objetivo del equipo de desarrollo es desarrollar su aplicación y ofrecer al cliente final las últimas funcionalidades de la misma, mientras que el equipo de administradores es el responsable de que esa aplicación funcione bien y conocer los servidores que manejan. Esos dos tipos de trabajo, esos dos objetivos, muchas veces han provocado que los dos equipos trabajen de manera separada.
En los últimos tiempos ha surgido una nueva metodología de trabajo, como es la metodología DevOps, que lo que trata es acercar al equipo de desarrollo y el equipo de administradores para trabajar de una forma similar, utilizando las mejores prácticas posibles y que el trabajo se haga colaborativamente para llegar a alcanzar los objetivos de la empresa.
Para que esto ocurra para desarrolladores tienen que conocer el mundo de los administradores de sistemas, y éstos tienen que conocer cómo y en qué trabajan los desarrolladores. Por eso es importante que los administradores tengan conocimientos de programación, ya que tienen más posibilidades de trabajar junto al equipo de desarrollo en la puesta en marcha de cualquier aplicación.
Un administrador de sistemas necesita automatizar muchas tareas y proceso de administración. Tradicionalmente ha tenido dos posibilidades para ello, o bien utilizar lenguajes de script para los sistemas operativos Linux, como por ejemplo Bash, o para administradores de un sistema operativo Windows programar con PowerShell, que permite automatizar tareas de administración.
La ventaja que ofrece Python para un administrador de sistemas es que es que un lenguaje multiplataforma, es decir, que permite escribir programas o scripts que se ejecuten de la misma forma en Windows y en Linux. Por lo tanto, esos scripts de administración van a ser portables entre los distintos sistemas, lo que hace que Python sea una opción muy atractiva para los administradores de sistemas.
Algunas de las ventajas que ofrece Python a los administradores son las siguientes:
Vamos a ver varios ejemplos de las ventajas que pueden tener Python a la hora de la administración de sistemas.
Primero veremos el uso de la librería “os”, que al importarla nos ofrece muchas funciones relacionadas con el sistema operativo, y además funciona tanto en Linux como en Windows.
Un ejemplo sería el siguiente programa:
#!/usr/bin/python3
import os
#Descubrir nuestro directorio de trabajo actual
dirActual = os.getcwd()
print(“Directorio trabajo actual: {}”.format(dir(Actual))
#Crear un directorio si este no existe
##Pedimos el path del directorio a crear:
carpeta = str(input(“\nIntroduce directorio a crear (ruta completa): “))
##Primero comprobamos si esta ya existe
if os.path.exists(carpeta): #Si queremos ver si existe y es un directorio: os.
print(“La carpeta {} ya existe”.format(carpeta))
exit(1)
else:
os.system(“mkdir {}”.format(carpeta))
#Para ver un listado del directorio donde se creó ahora mismo esa carpeta
cpath = carpeta.split(“/”)[0:-1] #Seleccionamos todas menos la creada
dir_madre = os.sep.join(cpath) #Que, en caso de Linux es “/”.join(cpath)
print(“Directorio madre : {}”.format(dir_madre))
listado = os.listdir(dir_madre)
print(“listado de los elementos de {}:”.format(dir_madre))
for elemento in listado:
print(“ - {}”.format(str(elemento)))
exit(0)
Podemos obtener el directorio actual, ver si una carpeta existe, crear una carpeta, obtener los datos de una de una carpeta y tratarlos, etc.
Incluso tiene en cuenta que en Linux tenemos separadores de directorios que son distintos a los separadores de Windows, y dependiendo del sistema donde los ejecutemos, tendremos unos u otros.
Si ejecutamos este programa comprobamos que crea un directorio preguntando por el nombre del mismo y después nos lista los ficheros que están en el directorio padre.
Vamos ahora con otro ejemplo, en este caso de la librería “sutil”, que nos proporciona funciones para trabajar con ficheros.
Vemos un ejemplo de la misma:
#!/usr/bin/python3
import shutil, os
ruta = os.getcwd() + os.sep
origen = ruta + ‘origen.txt’
destino = ruta + ‘destino.txt’
try:
shutil.copyfile(origen,destino)
print(“Archivo copiado”)
except:
print(“Se ha producido un error”)
Con éste programa lo que conseguimos es copiar un fichero origen a un fichero destino, empleando las funciones que nos ofrecen las librerías “os” y “shutil”.
Si lo ejecutamos vemos que efectivamente nos copia el fichero origen.txt al fichero destino.txt.
Pasamos a ver el módulo “subprocess”, que simplemente ejecuta una instrucción y obtiene la salida, que es una cadena de texto que podemos tratar en Python.
Un ejemplo sería el siguiente programa:
#!/usr/bin/python3
import subprocess
output = subprocess.check_output([“df”,”-h”])
for fich in output.decode().splitlines()[1:]:
datos=fich.split(“ “)
while ““ in datos:
datos.remove(‘’)
print(datos[0],” - “,datos[4])
Podemos obtener el directorio actual, ver si una carpeta existe, crear una carpeta, obtener los datos de una de una carpeta y tratarlos, etc.
Incluso tiene en cuenta que en Linux tenemos separadores de directorios que son distintos a los separadores de Windows, y dependiendo del sistema donde los ejecutemos, tendremos unos u otros.
Si ejecutamos el programa, ejecuta la función df -h y se obtiene una lista con los nombres de los dispositivos de bloque y el porcentaje de uso de cada uno de ellos. Es decir, se ha ejecutado la instrucción, se ha cogido la salida y se ha tratado para que muestre únicamente la primera y la cuarta columna.
Por último vamos a ver ejemplo de cómo hacer scripts parametrizados, utilizando con argumentos.
Para ello creamos este programa:
#!/usr/bin/python3
import sys
if len(sys.argv) != 2:
print(“Debes poner el usuario como parámetro”)
sys.exit(-1)
usuario=sys.argv[1]
fichero=open(“/etc/passwd”,”r”)
líneas=fichero.read()
fichero.seek(0)
if líneas.find(usuario)==-1:
print(“Usuario no existe”)
elif líneas.find(usuario+”:x:0:0”)==-1
print(“No es admistrador”)
else:
print(“Es administrador”)
for línea in fichero:
print(línea.split(“:”)[0])
fichero.close()
En este ejemplo, la librería “sys” tiene una lista (argv) dónde están los parámetros que hemos recibido. Siempre se recibe el nombre del script y después los parámetros que se han indicado.
Este ejemplo lo que hace es recibir el nombre de un usuario como parámetro, comprueba si es administrador y si lo es muestra los usuarios del sistema, y si no es administrador, lo indica.
Si lo ejecutamos comprobamos que funciona correctamente.
Con estos cuatro ejemplos sencillos hemos visto la potencialidad y las funciones que ofrece Python a los administradores de sistemas, por lo que puede ser un lenguaje a tener en cuenta para aprender para todos los que os dediquéis a la administración de sistemas, tanto Linux como Windows.
Si quieres aprender en profundidad Python, puedes hacer el curso de Python 3 desde cero de nuestro profesor José Domingo Muñoz en el que aprenderás los fundamentos del lenguaje de programación Python 3 desde cero, pensado para no programadores que se quieran iniciar en este mundo.
Recuerda que puedes comenzar este curso con tu suscripción a OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.
También te puede interesar
Tu pasaporte a sabelotodo de Python. Desde las bases hasta la creación de tu primer programa, este curso...
La eficiencia de un desarrollador en Python puede mejorar notablemente solo con la elección de un editor optimizado. Estudios han demostrado que...
Si ya sabes programar con Python y quieres crear una aplicación Web, te recomendamos los 4 mejores frameworks para aplicaciones de Python