es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Buscando un texto específico en python

Espero que esto sea rápido y fácil.
Estoy tratando de buscar un nombre de host en un dispositivo y luego usar ese nombre de host para dictar la configuración que se le envía a través de netmiko.
Creo que estoy fallando porque la salida no está en una sola línea.
Como prueba, en este momento solo estoy intentando imprimir la salida de la siguiente manera:

device_name = net_connect.send_command('show running-config sys global-settings hostname')
hostname = re.search('^hostname', device_name, re.M)
print(hostname)

Cuando ejecuto el comando anterior en el dispositivo manualmente, la salida es así:

sys global-settings {

    hostname triton.lakes.hostname.net

}

Entonces, ¿necesito ajustar re.search para tener en cuenta las líneas separadas y capturar solo la línea ‘hostname triton.lakes.hostname.net’?

Muchas gracias

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, necesitas ajustar la expresión regular para capturar toda la línea que contiene el nombre de host. Puedes probar el siguiente código:

    device_name = net_connect.send_command('show running-config sys global-settings')
    hostname = re.search('^hostname\s+(\S+)$', device_name, re.MULTILINE)
    if hostname:
        hostname = hostname.group(1)
        print(hostname)
    else:
        print("Nombre de host no encontrado")
    

    Aquí, la expresión regular ^hostname\s+(\S+)$ hace coincidir la línea que comienza con hostname, seguida de uno o más espacios en blanco (\s+), y luego captura los caracteres no espacios en blanco restantes (\S+) hasta el final de la línea ($). Los anclajes ^ y $ aseguran que la coincidencia se limite a una sola línea, y la bandera re.MULTILINE permite que los anclajes ^ y $ coincidan con el inicio y el final de cada línea, respectivamente.

    Si la coincidencia de la expresión regular tiene éxito, el nombre de host se extrae del objeto de coincidencia utilizando el método group(1) y se imprime. De lo contrario, se imprime un mensaje indicando que el nombre de host no se encontró.

Comments are closed.