Construyendo CLI para verificar el estado de la URL usando Python

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:

error necesita al menos 1 argumento

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:

comando de ayuda

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:

CLI que verifica el estado de la URL

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:

final

Publicación traducida automáticamente

Artículo escrito por kushwanthreddy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *