Python es un gran lenguaje de programación para automatizar tareas de administración de sistemas en sistemas Linux. Con su amplia selección de diferentes bibliotecas, muchas de ellas se pueden usar para mejorar la eficiencia de varias tareas. Usando los ejemplos a continuación, puede ejecutar fácilmente los comandos del sistema Linux, trabajar con archivos y directorios, realizar tareas de red y automatizar procesos de autenticación en solo unos segundos.
¿Qué es Python?
Python se puede describir mejor como un lenguaje de programación de propósito general. Fue desarrollado por un científico informático holandés llamado Guido van Rossum a fines de la década de 1980 y principios de la de 1990 para ser un lenguaje de programación de tipo dinámico y sucesor del lenguaje de programación «ABC».
Hoy en día, es ampliamente considerado como uno de los lenguajes de programación más populares del mundo, con casos de uso que van desde cualquier desarrollo web hasta matemáticas complejas y cálculos científicos. También es apreciado por su elegante sintaxis y por ser relativamente fácil de aprender.
Instalación de Python en Linux
Muchas distribuciones de Linux ya tienen Python instalado por defecto. Para comprobar si su sistema tiene instalado Python 3 o no, puede ejecutar el python3
comando con el --version
bandera:
Si Python está instalado, el comando mostrará la versión de su configuración de Python.
Para instalar Python en sistemas Ubuntu y Debian:
sudo apt update && sudo apt upgrade -y sudo apt install python3.10
Alternativamente, Pitón también se puede descargar como archivo “.tgz” o “.xz”.
Uso del módulo «os»
Una de las mejores bibliotecas de Python para administradores de sistemas Linux es el módulo «os». Puede usarlo para la automatización de muchos tipos diferentes de tareas, como el manejo de directorios y archivos. También puede ejecutar comandos del sistema.
Como ejemplo, puede utilizar el módulo para crear un nuevo directorio:
#Import the OS module import os #Name of the new directory dir_name = "example" try: #Creates the new directory os.mkdir(dir_name) #Prints the result, if the directory was successfully created print(f"Directory '{dir_name}' created successfully") #Prints the result, in case the directory already exists except FileExistsError: print(f"Directory '{dir_name}' already exists")
También puede eliminar un directorio usando el módulo:
#Import the OS module import os #Name of the directory to be deleted dir_name = "example" try: #Deletes the directory os.rmdir(dir_name) #Prints the result, if the directory was successfully deleted print(f"Directory '{dir_name}' deleted successfully") #Prints the result, if the directory doesn't exist except FileNotFoundError: print(f"Directory '{dir_name}' doesn't exist")
Puede cambiar el nombre de archivos y directorios:
#Import the OS module import os #Current name of the directory or file current_name = "example" new_name = "example2.0" try: #Renames the directory or file content = os.rename(current_name, new_name) #Prints the contents of the directory print(f"Directory/File '{current_name}' was successfully renamed to '{new_name}'") #Print the error message, if the directory or file doesn't exist except FileNotFoundError: print(f"Directory/File '{current_name}' doesn't exist")
Los archivos son fácilmente extraíbles usando el módulo:
#Import the OS module import os #Name of the file to be deleted file_name = "example.txt" try: #Deletes the file os.remove(file_name) #Prints the result, if the file was successfully deleted print(f"File '{file_name}' deleted successfully") #Prints the result, if the file doesn't exist except FileNotFoundError: print(f"File '{file_name}' doesn't exist")
El directorio de trabajo actual es fácilmente imprimible:
#Import the OS module import os try: #Gets the current working directory cwd = os.getcwd() #The name of the current working directory is printed out print(cwd) #If an error occurs, it is printed out except: print("An error occurred")
El contenido de un directorio, como archivos y subdirectorios, se puede verificar fácilmente:
#Import the OS module import os #Name of the directory dir_name = "example" try: #Gets the contents of the directory content = os.listdir(dir_name) #Prints the contents of the directory print(content) #Prints the error, if the directory doesn't exist except FileNotFoundError: print(f"Directory '{dir_name}' doesn't exist")
Utilice el módulo para imprimir el usuario actual:
#Import the OS module import os try: #Gets the name of the current user user = os.getlogin() #Prints the name of the current user print(user) #Prints an error message, in case it occurs except: print("An error occurred")
También ejecute comandos de shell de Linux usando el módulo:
#Import the OS module import os #The shell command to run command = "sudo apt update && sudo apt upgrade -y" try: #Runs the system command result = os.system(command) #Prints the result of the command print(result) #Prints an error message, in case an error occurs except: print("An error occurred")
Realización de tareas de red mediante el módulo «socket»
Python tiene un módulo que está diseñado para realizar diferentes tareas de red y crear utilidades complejas relacionadas con la red, como escáneres de puertos y servidores de videojuegos. No sorprende que el módulo «socket» también se pueda usar para realizar tareas de red básicas y comunes en su sistema.
Puede, por ejemplo, verificar la dirección IP y el nombre de host de su sistema:
#Import the socket module import socket try: #Getting the hostname host = socket.gethostname() #Getting the IP address of the host ip = socket.gethostbyname(host) #Prints the IP address print(f"IP address: {ip}") #Prints the hostname print(f"Hostname: {host}") #Prints an error message, if an error occurs except: print("An error occurred")
También puede usar el módulo para verificar la dirección IP de un sitio web:
#Import the socket module import socket try: #Domain to be checked domain = "duckduckgo.com" #Getting the IP address of the domain ip = socket.gethostbyname(domain) #Prints the IP address print(f"IP address: {ip}") #Prints an error message, if an error occurs except: print("An error occurred")
Uso de Paramiko para iniciar sesión en un servidor SSH y ejecutar comandos
Si desea automatizar el proceso de inicio de sesión en la configuración de un servidor SSH y ejecutar comandos allí, una biblioteca de Python «Paramiko» será extremadamente útil.
Primero descargue la biblioteca usando Python’s pip3
gerente de empaquetación:
Use el módulo para iniciar sesión en un servidor SSH y ejecutar comandos:
#Importing the Paramiko library import paramiko #Specifying the IP and credentials ip = '127.0.0.1' port = 22 user = 'example' password = 'example' command = "uname -a" try: #Initiating the Paramiko client ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #Connecting to the SSH server ssh.connect(ip, port, user, password) #Running a command on the system stdin, stdout, stderr = ssh.exec_command(command) #Prints the result of the command print(stdout.read().decode()) #Prints an error message, in case an error occurs except: print("An error occurred")
Preguntas frecuentes
1. ¿Necesito Python 3 para usar estos módulos y bibliotecas?
Si bien la mayoría de estas bibliotecas y módulos funcionan con Python 2, hay una diferencia en la sintaxis y estos fragmentos de código no se ejecutarán. Con algunos cambios, puede adaptarlos para que se ejecuten en Python 2. Sin embargo, Python 2 está desactualizado, por lo que debería usar Python 3.
2. ¿Necesito instalar los módulos “os” y “socket”?
Generalmente, no. La mayoría de las instalaciones de Python vienen con estos módulos listos para usar.
3. ¿Puedo usar Paramiko para iniciar sesión en sistemas que no sean Unix?
Según el desarrollador de Paramiko, en este momento la biblioteca no se puede usar para iniciar sesión en sistemas que no sean Unix con SSH.