bash: come nascondere il testo digitato in una console

Vi siete mai chiesti per quale motivo non compare la password che viene digitata al login? E soprattutto come fare un "trucchetto" del genere?

In bash si usa il comando read per leggere gli input da tastiera. Ad esempio lo si fa ogni qualvota è necessaria la conferma per una certa operazione. Normalmente quello che viene digitato dall'utente viene stampato a video. Nel caso di una password però la stampa a video è decisamente sconsigliata.

$TIMELIMIT=60 #(secondi)
echo "Inserisci la password per decifrare i dischi:"
read -t $TIMELIMIT PWD <&1

Quello che viene digitato dall'utente finisce nella variabile PWD

Il metodo con il quale si rende invisibile il testo digitato è semplice: viene inibita la funzione di echo nel terminale che è la responsabile della stampa a video. Ecco il codice:

echo "Inserisci la password per decifrare i dischi:"
#non mostro la pwd che viene digitata

#salvo i parametri del terminale
stty_orig=`stty -g` 

#inibisco la funzione di echo
stty -echo 

#attendo la digitazione della password e la salvo in PWD
read -t $TIMELIMIT PWD <&1  

#ripristino i parametri del terminale
stty $stty_orig  

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Linee e paragrafi vanno a capo automaticamente.

Maggiori informazioni sulle opzioni di formattazione.

CAPTCHA
Questa domanda serve per verificare che tu sia un visitatore umano (non un computer) e per prevenire lo spam
1 + 0 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.