J'écris un script Bourne Shell et je saisis un mot de passe comme ceci:
echo -n 'Password: '
read password
Évidemment, je ne veux pas que le mot de passe soit répercuté sur le terminal, je souhaite donc désactiver l'écho pour la durée de la lecture. Je sais qu'il est possible de faire cela avec stty
, mais je poserai la question pour le bénéfice de la communauté pendant que je lirai la page de manuel. ;)
stty_orig=`stty -g`
stty -echo
echo 'hidden section'
stty $stty_orig
read -s password
fonctionne sur ma boîte Linux.
Vous pouvez utiliser l’option '-s' de read command pour masquer la saisie de l’utilisateur.
echo -n "Password:"
read -s password
if [ $password != "..." ]
then
exit 1; # exit as password mismatched #
fi
Vous pouvez aussi utiliser 'ssty -echo' si vous voulez vous cacher du terminal pour imprimer. Et restaurez les paramètres du terminal en utilisant "ssty echo"
Mais je pense que pour obtenir le mot de passe de l'utilisateur 'read -s password' est largement suffisant.
Bourne Shell Script:
#!/bin/sh
# Prompt user for Password
echo -n 'Password: '
# Do not show what is being typed in console by user
stty -echo
# Get input from user and assign input to variable password
read password
# Show what is being typed in console
stty echo
commande manuelle stty pour plus d'informations:
@:/dir #man stty
Extraits manuels stty:
STTY(1) stty 5.2.1 (March 2004) STTY(1)
NAME
stty - change and print terminal line settings
SYNOPSIS
stty [-F DEVICE] [--file=DEVICE] [SETTING]...
stty [-F DEVICE] [--file=DEVICE] [-a|--all]
stty [-F DEVICE] [--file=DEVICE] [-g|--save]
DESCRIPTION
Print or change terminal characteristics.
-a, --all
print all current settings in human-readable form
-g, --save
print all current settings in a stty-readable form
-F, --file=DEVICE
open and use the specified DEVICE instead of stdin
--help
display this help and exit
--version
output version information and exit
Optional - before SETTING indicates negation. An * marks
non-POSIX settings. The underlying system defines which
settings are available.
Local settings:
[-]echo
echo input characters