En este artículo, construiremos un programa CLI (interfaz de línea de comandos) para verificar el estado de una URL usando Python. La CLI de python toma una o más URL como argumentos y verifica si la URL es accesible (o no).
Implementación paso a paso
Paso 1: configuración de archivos y requisitos de instalación
Primero, cree un directorio llamado «urlcheck» y cree un nuevo archivo en el directorio «urlcheck.py» (puede usar cualquier nombre para el directorio y el archivo python).
mkdir urlcheck && cd urlcheck touch urlcheck.py
Instale las bibliotecas de requests y validadores de Python:
pip3 install requests validators
Ahora cree un archivo base de Python importando todas las bibliotecas requeridas
Python3
import sys import requests from http.client import responses import validators if len(sys.argv) < 2: print('You need to specify atleast one URL') sys.exit() def main(): # main function if __name__ == "__main__": main()
Producción:
En el código anterior, la biblioteca sys proporciona funciones y variables que se utilizan para manipular diferentes partes del entorno de tiempo de ejecución de Python. Se usa para tomar argumentos como entrada usando el módulo argv, la biblioteca de requests es útil para hacer conexiones HTTP, el módulo de respuestas de la biblioteca de cliente HTTP de python proporciona una pequeña descripción para los códigos de respuesta HTTP, la biblioteca de validadores se usa para validar la URL
Si la condición verifica que el usuario ha pasado al menos un argumento, si la condición falla, el programa saldrá con un error que indica que el usuario debe especificar al menos una URL.
Paso 2: Creación de la función de ayuda
La función de ayuda muestra los comandos disponibles y actúa como documentación para el comando. Se ejecuta cuando se pasa ayuda como argumento.
Python3
def usage(): print("\nUsage:\nSingle URL: urlcheck <url>\ nMultiple URL's: urlcheck <url1> <url2> ... <urln>\n") if sys.argv[1]=="help": usage() sys.exit()
Producción:
Paso 3: Crear la función principal
La función principal es la función que se ejecuta cuando el script comienza a ejecutarse, la función principal contiene toda la lógica para nuestro programa CLI.
Python3
def main(): n = len(sys.argv) for i in range(1, n): url = sys.argv[i] if validators.url(url) is True: status = requests.head(url).status_code try: print(url, status, responses[status], "\n") except: print(url, status, "Not an Standard HTTP Response code\n") else: print(url, "Not an valid URL\n") continue
Producción:
En el código anterior, la variable «n» se usa para obtener la cantidad de argumentos que el usuario ha especificado. El bucle for se ejecuta tomando un argumento a la vez y se repite hasta que se hayan pasado todos los argumentos. La «URL» almacena el argumento dado uno a la vez y valida cuando es una URL válida. No es una URL válida, el bloque else imprime una advertencia y continúa con la siguiente iteración. Si es una URL válida, la biblioteca de requests realiza una conexión HTTP utilizando el método HEAD. El método HEAD es similar a GET pero no contiene HTML en su respuesta, luego almacenamos el código de estado de la respuesta en la variable «estado».
Por último, intentamos imprimir la URL, su código de estado de respuesta y una pequeña descripción del código de estado. Si el código de estado no es un código de estado de respuesta HTTP estándar (las CDN usan códigos de estado personalizados), se imprime No es un código de respuesta HTTP estándar.
Paso 4: crear un comando CLI personalizado
Hay varias formas de crear comandos CLI personalizados, pero usaremos un alias porque es fácil de crear y no es necesario realizar ningún cambio en los permisos de archivo (o) cambiar directorios.
Para ventanas:
Debe editar el archivo /C/’Program Files’/Git/etc/profile.d/aliases.sh y agregar la ubicación para su secuencia de comandos de python
alias urlcheck="location to your python file"
Para Mac y Linux:
necesita editar ~/.profile agregar ubicación a su secuencia de comandos de python
alias urlcheck="python3 ~/urlcheck/urlcheck.py"
Después de guardar .profile, ejecute el siguiente comando para asegurarse de que el alias se actualice
source ~/.profile
A continuación se muestra la implementación completa:
Python3
import sys import requests from http.client import responses import validators if len(sys.argv) < 2: print('You need to specify at least url') sys.exit() def usage(): print("\nUsage:\nSingle URL: urlcheck <url>\nMultiple\ URL's: urlcheck <url1> <url2> ... <urln>\n") if sys.argv[1]=="help": usage() sys.exit() def main(): n = len(sys.argv) print("\n") for i in range(1, n): url = sys.argv[i] if validators.url(url) is True: status = requests.head(url).status_code try: print(url, status,responses[status], "\n") except: print(url, status, "Not an Standard HTTP Response code\n") else: print(url, "Not an valid URL\n") continue if __name__ == "__main__": main()
Producción:
Publicación traducida automáticamente
Artículo escrito por kushwanthreddy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA