Bash Scripting: Bash lee la contraseña sin hacer eco

En general, puede ver en la página de inicio de sesión, cada vez que ingresamos una contraseña, muestra un punto (•) o un asterisco (*) en lugar de una contraseña. Lo hacen porque para proteger nuestro sistema o cuenta. En tal caso, la página de inicio de sesión leerá la contraseña y, en lugar de la contraseña, mostrará un punto o un asterisco. Y en algunos casos, es posible que no aparezca un punto o un asterisco, lo que significa que no muestra nada en lugar de una contraseña.

Veamos cómo leer la contraseña sin hacer eco

Primero, cree un archivo llamado «User.sh» usando el siguiente comando

$ touch User.sh

Ahora abra «User.sh» en el editor de texto 

$ nano User.sh

Ahora escriba el siguiente script bash en «User.sh»

#!/bin/bash
echo "Enter Username : "

# read username and echo username in terminal
read username
echo "Enter Password : "

# password is read in silent mode i.e. it will
# show nothing instead of password.
read -s password 
echo
echo "Your password is read in silent mode." 

Nota: aquí se usa ‘-s’ para leer contraseñas porque leerá contraseñas en modo silencioso

Ahora guarde el script bash anterior y ejecute «User.sh» siguiendo el comando

$ chmod +x ./User.sh
$ ./User.sh

Producción : 

Lee la contraseña y no muestra nada allí

Aquí, podemos ver claramente que la secuencia de comandos anterior leerá el nombre de usuario y la contraseña, pero no refleja la contraseña.

Veamos cómo leer la contraseña con ” * “

Ahora, cree un archivo llamado «Contraseña.sh» usando el siguiente comando

$ touch Password.sh

Ahora, abra «Contraseña.sh» en el editor de texto

$ nano Password.sh

Ahora escriba debajo del script bash en «Contraseña.sh»

#!/bin/bash

password=""
echo "Enter Username : "

# it will read username
read username
pass_var="Enter Password :"

# this will take password letter by letter
while IFS= read -p "$pass_var" -r -s -n 1 letter
do
    # if you press enter then the condition 
    # is true and it exit the loop
    if [[ $letter == $'\0' ]]
    then
        break
    fi
    
    # the letter will store in password variable
    password=password+"$letter"
    
    # in place of password the asterisk (*) 
    # will printed
    pass_var="*"
done
echo
echo "Your password is read with asterisk (*)."

Nota: Aquí,

  • IFS: es un separador de campo interno que se utiliza para dividir palabras o caracteres
  • -r: Leerá la contraseña.
  • -p: Hará eco de la entrada carácter por carácter.
  • -s: Leerá la contraseña en modo silencioso.
  • -n: No imprime el salto de línea final. 

Ahora guarde el script bash anterior y ejecute «Contraseña.sh» con el siguiente comando

$ chmod +x ./Password.sh
$ ./Password.sh

Producción : 

Salida: Leer contraseña con un asterisco (*)

Aquí, podemos ver claramente que el script anterior leerá el nombre de usuario y la contraseña con un asterisco (*)

Publicación traducida automáticamente

Artículo escrito por thesahilrai 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 *