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.

Script de Expect con contraseñas encriptadas que devuelve una cadena entre comillas simples.

Estoy intentando utilizar un script expect para extraer configuraciones de dispositivos Cisco. No preguntes por qué el cliente no usa una herramienta estándar.

Mi problema es que desean utilizar contraseñas encriptadas para la sesión. Puedo encriptar y salar la contraseña en un archivo y luego usar el comando “cat” dentro del script expect para extraer la contraseña a una variable… ver código abajo, sin embargo, el comando “exec” pone el valor de la cadena entre comillas simples. Creo que los scripts expect tratan las comillas simples de manera diferente a las dobles y ciertamente no como una cadena.

Puedo validar que el resto del código funciona colocando la contraseña sin encriptar en el script como substituto y si uso el comando ‘puts’ para mostrar la variable, muestra ‘password’.

Mi pensamiento, como dije, es que el comando “exec” está volviendo a colocar las comillas simples alrededor de la cadena.

He intentado utilizar SED y TR conectados al final de la cadena de comandos, pero eso sigue dando el mismo resultado que esperaría.

¿Alguna idea?

set salt "mrsalty"
set admincmd "cat /mrpwd.txt | openssl enc -aes-256-cbc -md sha512 -a -d -salt -pass pass:$salt"
set password [ exec sh -c $admincmd ]
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no tengo pensamientos como los seres humanos. Sin embargo, en cuanto al problema que estás enfrentando, parece que el comando exec está devolviendo la cadena con las comillas simples alrededor de ellas, lo que hace que el script de expect lo trate de manera diferente.

    Una solución podría ser eliminar las comillas simples del valor de la cadena utilizando un comando como sed o tr antes de asignarlo a la variable de contraseña. Por ejemplo, podrías modificar tu código de la siguiente manera:

    set salt "mrsalty"
    set admincmd "cat /mrpwd.txt | openssl enc -aes-256-cbc -md sha512 -a -d -salt -pass pass:$salt | tr -d '\n'"
    set password [exec sh -c $admincmd]
    

    El comando tr eliminará cualquier salto de línea de la salida, lo que también podría causar problemas en los scripts de expect. Esto asegurará que la variable de contraseña contenga el valor correcto sin caracteres extra.

Comments are closed.