script bash : demander à l'utilisateur de saisir mot de passe sans qu'il s'affic he etc.
13 réponses
Francois Lafont
Bonjour à tous,
Avec le petit script ci-dessous, l'utilisateur doit saisir un mot de
passe (qui s'affiche en clair) et celui est ensuite stocké dans une
variable :
#---------------------------
echo -n "Votre mot de passe : "
read
mdp="$REPLY"
#---------------------------
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient,
la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un
fichier (une fois qu'il a fermé son terminal) ?
Q2 : existe-t-il un moyen (simple si possible ;-)) en bash de faire un
script qui se comporte comme la commande passwd par exemple, dans le
sens où le mot de passe saisi par l'utilisateur ne s'affiche pas, tout
en étant bien sûr enregistré par le script ?
Avec le petit script ci-dessous, l'utilisateur doit saisir un mot de passe (qui s'affiche en clair) et celui est ensuite stocké dans une variable :
#--------------------------- echo -n "Votre mot de passe : " read mdp="$REPLY" #---------------------------
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient, la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un fichier (une fois qu'il a fermé son terminal) ?
Je ne crois pas.
Q2 : existe-t-il un moyen (simple si possible ;-)) en bash de faire un script qui se comporte comme la commande passwd par exemple, dans le sens où le mot de passe saisi par l'utilisateur ne s'affiche pas, tout en étant bien sûr enregistré par le script ?
trap "stty echo" EXIT HUP INT QUIT stty -echo read mdp stty echo trap - EXIT HUP INT QUIT
Le 20.02.2012 13:07, Francois Lafont a écrit :
Bonjour à tous,
Avec le petit script ci-dessous, l'utilisateur doit saisir un mot de
passe (qui s'affiche en clair) et celui est ensuite stocké dans une
variable :
#---------------------------
echo -n "Votre mot de passe : "
read
mdp="$REPLY"
#---------------------------
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient,
la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un
fichier (une fois qu'il a fermé son terminal) ?
Je ne crois pas.
Q2 : existe-t-il un moyen (simple si possible ;-)) en bash de faire un
script qui se comporte comme la commande passwd par exemple, dans le
sens où le mot de passe saisi par l'utilisateur ne s'affiche pas, tout
en étant bien sûr enregistré par le script ?
trap "stty echo" EXIT HUP INT QUIT
stty -echo
read mdp
stty echo
trap - EXIT HUP INT QUIT
Avec le petit script ci-dessous, l'utilisateur doit saisir un mot de passe (qui s'affiche en clair) et celui est ensuite stocké dans une variable :
#--------------------------- echo -n "Votre mot de passe : " read mdp="$REPLY" #---------------------------
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient, la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un fichier (une fois qu'il a fermé son terminal) ?
Je ne crois pas.
Q2 : existe-t-il un moyen (simple si possible ;-)) en bash de faire un script qui se comporte comme la commande passwd par exemple, dans le sens où le mot de passe saisi par l'utilisateur ne s'affiche pas, tout en étant bien sûr enregistré par le script ?
trap "stty echo" EXIT HUP INT QUIT stty -echo read mdp stty echo trap - EXIT HUP INT QUIT
Luc.Habert.00__arjf
Francois Lafont :
#--------------------------- echo -n "Votre mot de passe : " read mdp="$REPLY"
Tu peux faire directement
echo -n "Votre mot de passe : " read -r mdp
, et ça t'évite d'etre dépendant d'une basherie.
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient, la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un fichier (une fois qu'il a fermé son terminal) ?
Éventuellement dans le swap. Si mdp est une variable d'environnement, et non une simple variable de shell, elle sera visible des autres process du meme utilisateur (cela dit, ils peuvent aussi taper directement dans la mémoire de ton shell, mais c'est un peu plus difficille qu'un simple "ps e").
Francois Lafont :
#---------------------------
echo -n "Votre mot de passe : "
read
mdp="$REPLY"
Tu peux faire directement
echo -n "Votre mot de passe : "
read -r mdp
, et ça t'évite d'etre dépendant d'une basherie.
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient,
la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un
fichier (une fois qu'il a fermé son terminal) ?
Éventuellement dans le swap. Si mdp est une variable d'environnement, et non
une simple variable de shell, elle sera visible des autres process du meme
utilisateur (cela dit, ils peuvent aussi taper directement dans la mémoire
de ton shell, mais c'est un peu plus difficille qu'un simple "ps e").
#--------------------------- echo -n "Votre mot de passe : " read mdp="$REPLY"
Tu peux faire directement
echo -n "Votre mot de passe : " read -r mdp
, et ça t'évite d'etre dépendant d'une basherie.
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient, la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un fichier (une fois qu'il a fermé son terminal) ?
Éventuellement dans le swap. Si mdp est une variable d'environnement, et non une simple variable de shell, elle sera visible des autres process du meme utilisateur (cela dit, ils peuvent aussi taper directement dans la mémoire de ton shell, mais c'est un peu plus difficille qu'un simple "ps e").
Francois Lafont
Le 20/02/2012 13:15, YBM a écrit :
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient, la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un fichier (une fois qu'il a fermé son terminal) ?
Je ne crois pas.
Ok.
Q2 : existe-t-il un moyen (simple si possible ;-)) en bash de faire un script qui se comporte comme la commande passwd par exemple, dans le sens où le mot de passe saisi par l'utilisateur ne s'affiche pas, tout en étant bien sûr enregistré par le script ?
trap "stty echo" EXIT HUP INT QUIT stty -echo read mdp stty echo trap - EXIT HUP INT QUIT
Merci pour la réponse qui semble parfaitement fonctionner. Ça ne doit pas être très compliqué, mais je ne connais pas du tout les deux commandes trap et stty. Je vais me documenter.
Merci beaucoup YBM. :-)
-- François Lafont
Le 20/02/2012 13:15, YBM a écrit :
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient,
la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un
fichier (une fois qu'il a fermé son terminal) ?
Je ne crois pas.
Ok.
Q2 : existe-t-il un moyen (simple si possible ;-)) en bash de faire un
script qui se comporte comme la commande passwd par exemple, dans le
sens où le mot de passe saisi par l'utilisateur ne s'affiche pas, tout
en étant bien sûr enregistré par le script ?
trap "stty echo" EXIT HUP INT QUIT
stty -echo
read mdp
stty echo
trap - EXIT HUP INT QUIT
Merci pour la réponse qui semble parfaitement fonctionner. Ça ne doit
pas être très compliqué, mais je ne connais pas du tout les deux
commandes trap et stty. Je vais me documenter.
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient, la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un fichier (une fois qu'il a fermé son terminal) ?
Je ne crois pas.
Ok.
Q2 : existe-t-il un moyen (simple si possible ;-)) en bash de faire un script qui se comporte comme la commande passwd par exemple, dans le sens où le mot de passe saisi par l'utilisateur ne s'affiche pas, tout en étant bien sûr enregistré par le script ?
trap "stty echo" EXIT HUP INT QUIT stty -echo read mdp stty echo trap - EXIT HUP INT QUIT
Merci pour la réponse qui semble parfaitement fonctionner. Ça ne doit pas être très compliqué, mais je ne connais pas du tout les deux commandes trap et stty. Je vais me documenter.
Merci beaucoup YBM. :-)
-- François Lafont
Luc.Habert.00__arjf
Francois Lafont :
mais je ne connais pas du tout les deux commandes trap et stty.
stty fait le boulot de désactivation de l'echo de ce qui est tapé par l'utilisateur (stty -echo) puis réactivation (stty echo).
trap permet d'installer un signal handler. Ici, le but du jeu est de faire exécuter le stty echo si l'utilisateur fait un ^C ou ^.
Francois Lafont :
mais je ne connais pas du tout les deux commandes trap et stty.
stty fait le boulot de désactivation de l'echo de ce qui est tapé par
l'utilisateur (stty -echo) puis réactivation (stty echo).
trap permet d'installer un signal handler. Ici, le but du jeu est de faire
exécuter le stty echo si l'utilisateur fait un ^C ou ^.
mais je ne connais pas du tout les deux commandes trap et stty.
stty fait le boulot de désactivation de l'echo de ce qui est tapé par l'utilisateur (stty -echo) puis réactivation (stty echo).
trap permet d'installer un signal handler. Ici, le but du jeu est de faire exécuter le stty echo si l'utilisateur fait un ^C ou ^.
Francois Lafont
Le 20/02/2012 13:25, Luc Habert a écrit :
#--------------------------- echo -n "Votre mot de passe : " read mdp="$REPLY"
Tu peux faire directement
echo -n "Votre mot de passe : " read -r mdp
, et ça t'évite d'etre dépendant d'une basherie.
Oui en effet, merci pour la remarque.
En fait, j'utilisais REPLY pour vraiment conserver à 100% la saisie exacte de l'utilisateur. En effet, avec ton code, si l'utilisateur saisit ça " aaa " (des espaces, des a, puis des espaces), alors dans la variable mdp les espaces de début et de fin ne sont pas conservés. Mais dans le cas de la saisie d'un mot de passe, cette non-conservation est souhaitable. Alors c'est parfait. :-)
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient, la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un fichier (une fois qu'il a fermé son terminal) ?
Éventuellement dans le swap. Si mdp est une variable d'environnement, et non une simple variable de shell, elle sera visible des autres process du meme utilisateur (cela dit, ils peuvent aussi taper directement dans la mémoire de ton shell, mais c'est un peu plus difficille qu'un simple "ps e").
Ok, ça semble effectivement compliqué et pas à la portée du premier venu.
Merci pour ces précisions.
-- François Lafont
Le 20/02/2012 13:25, Luc Habert a écrit :
#---------------------------
echo -n "Votre mot de passe : "
read
mdp="$REPLY"
Tu peux faire directement
echo -n "Votre mot de passe : "
read -r mdp
, et ça t'évite d'etre dépendant d'une basherie.
Oui en effet, merci pour la remarque.
En fait, j'utilisais REPLY pour vraiment conserver à 100% la saisie
exacte de l'utilisateur. En effet, avec ton code, si l'utilisateur
saisit ça " aaa " (des espaces, des a, puis des espaces), alors dans
la variable mdp les espaces de début et de fin ne sont pas conservés.
Mais dans le cas de la saisie d'un mot de passe, cette non-conservation
est souhaitable. Alors c'est parfait. :-)
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient,
la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un
fichier (une fois qu'il a fermé son terminal) ?
Éventuellement dans le swap. Si mdp est une variable d'environnement, et non
une simple variable de shell, elle sera visible des autres process du meme
utilisateur (cela dit, ils peuvent aussi taper directement dans la mémoire
de ton shell, mais c'est un peu plus difficille qu'un simple "ps e").
Ok, ça semble effectivement compliqué et pas à la portée du premier venu.
#--------------------------- echo -n "Votre mot de passe : " read mdp="$REPLY"
Tu peux faire directement
echo -n "Votre mot de passe : " read -r mdp
, et ça t'évite d'etre dépendant d'une basherie.
Oui en effet, merci pour la remarque.
En fait, j'utilisais REPLY pour vraiment conserver à 100% la saisie exacte de l'utilisateur. En effet, avec ton code, si l'utilisateur saisit ça " aaa " (des espaces, des a, puis des espaces), alors dans la variable mdp les espaces de début et de fin ne sont pas conservés. Mais dans le cas de la saisie d'un mot de passe, cette non-conservation est souhaitable. Alors c'est parfait. :-)
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient, la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un fichier (une fois qu'il a fermé son terminal) ?
Éventuellement dans le swap. Si mdp est une variable d'environnement, et non une simple variable de shell, elle sera visible des autres process du meme utilisateur (cela dit, ils peuvent aussi taper directement dans la mémoire de ton shell, mais c'est un peu plus difficille qu'un simple "ps e").
Ok, ça semble effectivement compliqué et pas à la portée du premier venu.
Merci pour ces précisions.
-- François Lafont
YBM
Le 20.02.2012 13:29, Francois Lafont a écrit :
Le 20/02/2012 13:15, YBM a écrit :
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient, la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un fichier (une fois qu'il a fermé son terminal) ?
Je ne crois pas.
Ok.
Q2 : existe-t-il un moyen (simple si possible ;-)) en bash de faire un script qui se comporte comme la commande passwd par exemple, dans le sens où le mot de passe saisi par l'utilisateur ne s'affiche pas, tout en étant bien sûr enregistré par le script ?
trap "stty echo" EXIT HUP INT QUIT stty -echo read mdp stty echo trap - EXIT HUP INT QUIT
Merci pour la réponse qui semble parfaitement fonctionner. Ça ne doit pas être très compliqué, mais je ne connais pas du tout les deux commandes trap et stty. Je vais me documenter.
Merci beaucoup YBM. :-)
de rien, et à l'instar de la remarque de Luc, je conseillerais de faire un read -r mdp afin qu'un '' dans le mdp ne crée pas surprise.
Le 20.02.2012 13:29, Francois Lafont a écrit :
Le 20/02/2012 13:15, YBM a écrit :
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient,
la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un
fichier (une fois qu'il a fermé son terminal) ?
Je ne crois pas.
Ok.
Q2 : existe-t-il un moyen (simple si possible ;-)) en bash de faire un
script qui se comporte comme la commande passwd par exemple, dans le
sens où le mot de passe saisi par l'utilisateur ne s'affiche pas, tout
en étant bien sûr enregistré par le script ?
trap "stty echo" EXIT HUP INT QUIT
stty -echo
read mdp
stty echo
trap - EXIT HUP INT QUIT
Merci pour la réponse qui semble parfaitement fonctionner. Ça ne doit
pas être très compliqué, mais je ne connais pas du tout les deux
commandes trap et stty. Je vais me documenter.
Merci beaucoup YBM. :-)
de rien, et à l'instar de la remarque de Luc, je conseillerais de faire
un read -r mdp afin qu'un '' dans le mdp ne crée pas surprise.
Q1 : certes le mot de passe s'affiche, mais au delà de cet inconvénient, la saisie qu'a faite l'utilisateur est-elle stockée quelque part dans un fichier (une fois qu'il a fermé son terminal) ?
Je ne crois pas.
Ok.
Q2 : existe-t-il un moyen (simple si possible ;-)) en bash de faire un script qui se comporte comme la commande passwd par exemple, dans le sens où le mot de passe saisi par l'utilisateur ne s'affiche pas, tout en étant bien sûr enregistré par le script ?
trap "stty echo" EXIT HUP INT QUIT stty -echo read mdp stty echo trap - EXIT HUP INT QUIT
Merci pour la réponse qui semble parfaitement fonctionner. Ça ne doit pas être très compliqué, mais je ne connais pas du tout les deux commandes trap et stty. Je vais me documenter.
Merci beaucoup YBM. :-)
de rien, et à l'instar de la remarque de Luc, je conseillerais de faire un read -r mdp afin qu'un '' dans le mdp ne crée pas surprise.
Francois Lafont
Le 20/02/2012 13:33, Luc Habert a écrit :
mais je ne connais pas du tout les deux commandes trap et stty.
stty fait le boulot de désactivation de l'echo de ce qui est tapé par l'utilisateur (stty -echo) puis réactivation (stty echo).
Ok, je vois.
trap permet d'installer un signal handler. Ici, le but du jeu est de faire exécuter le stty echo si l'utilisateur fait un ^C ou ^.
Heu, là je vois moins bien. Effectivement avec ça :
echo -n "Mot de passe : " trap "stty echo" EXIT HUP INT QUIT stty -echo read -r mdp stty echo trap - EXIT HUP INT QUIT
a) si je tape CTRL+C au moment de la demande de mot de passe, je vois s'afficher ^C.
b) si j'enlève les trap, alors quand je tape CTRL+C, le programme s'arrête.
C'est pas le cas b) qui est le plus logique en principe ?
-- François Lafont
Le 20/02/2012 13:33, Luc Habert a écrit :
mais je ne connais pas du tout les deux commandes trap et stty.
stty fait le boulot de désactivation de l'echo de ce qui est tapé par
l'utilisateur (stty -echo) puis réactivation (stty echo).
Ok, je vois.
trap permet d'installer un signal handler. Ici, le but du jeu est de faire
exécuter le stty echo si l'utilisateur fait un ^C ou ^.
Heu, là je vois moins bien. Effectivement avec ça :
echo -n "Mot de passe : "
trap "stty echo" EXIT HUP INT QUIT
stty -echo
read -r mdp
stty echo
trap - EXIT HUP INT QUIT
a) si je tape CTRL+C au moment de la demande de mot de passe, je vois
s'afficher ^C.
b) si j'enlève les trap, alors quand je tape CTRL+C, le programme s'arrête.
C'est pas le cas b) qui est le plus logique en principe ?
mais je ne connais pas du tout les deux commandes trap et stty.
stty fait le boulot de désactivation de l'echo de ce qui est tapé par l'utilisateur (stty -echo) puis réactivation (stty echo).
Ok, je vois.
trap permet d'installer un signal handler. Ici, le but du jeu est de faire exécuter le stty echo si l'utilisateur fait un ^C ou ^.
Heu, là je vois moins bien. Effectivement avec ça :
echo -n "Mot de passe : " trap "stty echo" EXIT HUP INT QUIT stty -echo read -r mdp stty echo trap - EXIT HUP INT QUIT
a) si je tape CTRL+C au moment de la demande de mot de passe, je vois s'afficher ^C.
b) si j'enlève les trap, alors quand je tape CTRL+C, le programme s'arrête.
C'est pas le cas b) qui est le plus logique en principe ?
-- François Lafont
Luc.Habert.00__arjf
Francois Lafont :
En fait, j'utilisais REPLY pour vraiment conserver à 100% la saisie exacte de l'utilisateur. En effet, avec ton code, si l'utilisateur saisit ça " aaa " (des espaces, des a, puis des espaces), alors dans la variable mdp les espaces de début et de fin ne sont pas conservés.
Ah flute alors. Mettre
OLDIFS=$IFS IFS avant, et
IFS=$OLDIFS
après pour qu'il ne s'amuse pas à trimmer.
Mais dans le cas de la saisie d'un mot de passe, cette non-conservation est souhaitable.
Bah non, on peut très bien mettre un espace dans un passwd.
Francois Lafont :
En fait, j'utilisais REPLY pour vraiment conserver à 100% la saisie
exacte de l'utilisateur. En effet, avec ton code, si l'utilisateur
saisit ça " aaa " (des espaces, des a, puis des espaces), alors dans
la variable mdp les espaces de début et de fin ne sont pas conservés.
Ah flute alors. Mettre
OLDIFS=$IFS
IFS
avant, et
IFS=$OLDIFS
après pour qu'il ne s'amuse pas à trimmer.
Mais dans le cas de la saisie d'un mot de passe, cette non-conservation
est souhaitable.
Bah non, on peut très bien mettre un espace dans un passwd.
En fait, j'utilisais REPLY pour vraiment conserver à 100% la saisie exacte de l'utilisateur. En effet, avec ton code, si l'utilisateur saisit ça " aaa " (des espaces, des a, puis des espaces), alors dans la variable mdp les espaces de début et de fin ne sont pas conservés.
Ah flute alors. Mettre
OLDIFS=$IFS IFS avant, et
IFS=$OLDIFS
après pour qu'il ne s'amuse pas à trimmer.
Mais dans le cas de la saisie d'un mot de passe, cette non-conservation est souhaitable.
Bah non, on peut très bien mettre un espace dans un passwd.
Luc.Habert.00__arjf
Francois Lafont :
a) si je tape CTRL+C au moment de la demande de mot de passe, je vois s'afficher ^C.
b) si j'enlève les trap, alors quand je tape CTRL+C, le programme s'arrête.
C'est pas le cas b) qui est le plus logique en principe ?
Le problème, c'est que l'état du terminal n'est pas restauré. Bon, en pratique, il va l'etre parce que quand un shell interactif reprend la main, il le fait aussi, mais ce n'est pas très propre de se reposer là-dessus.
Francois Lafont :
a) si je tape CTRL+C au moment de la demande de mot de passe, je vois
s'afficher ^C.
b) si j'enlève les trap, alors quand je tape CTRL+C, le programme s'arrête.
C'est pas le cas b) qui est le plus logique en principe ?
Le problème, c'est que l'état du terminal n'est pas restauré. Bon, en
pratique, il va l'etre parce que quand un shell interactif reprend la main,
il le fait aussi, mais ce n'est pas très propre de se reposer là-dessus.
a) si je tape CTRL+C au moment de la demande de mot de passe, je vois s'afficher ^C.
b) si j'enlève les trap, alors quand je tape CTRL+C, le programme s'arrête.
C'est pas le cas b) qui est le plus logique en principe ?
Le problème, c'est que l'état du terminal n'est pas restauré. Bon, en pratique, il va l'etre parce que quand un shell interactif reprend la main, il le fait aussi, mais ce n'est pas très propre de se reposer là-dessus.
Francois Lafont
Le 20/02/2012 14:14, Luc Habert a écrit :
En fait, j'utilisais REPLY pour vraiment conserver à 100% la saisie exacte de l'utilisateur. En effet, avec ton code, si l'utilisateur saisit ça " aaa " (des espaces, des a, puis des espaces), alors dans la variable mdp les espaces de début et de fin ne sont pas conservés.
Ah flute alors
Ben non pourquoi flûte, au contraire ?
. Mettre
OLDIFS=$IFS IFS > avant, et
IFS=$OLDIFS
après pour qu'il ne s'amuse pas à trimmer.
Mais dans le cas de la saisie d'un mot de passe, cette non-conservation est souhaitable.
Bah non, on peut très bien mettre un espace dans un passwd.
Oui mais les espaces à l'intérieur du mot de passe eux sont bien conservés avec « read -r mdp », pas de souci. Seuls les espaces du début et de la fin sont enlevés. Moi, je trouve ça bien : mettre un espace à l'intérieur de son mot de passe ok, mais mettre des espaces au début et/ou à la fin de son mot de passe là franchement je trouve que ce n'est pas très « catholique ». :-)
-- François Lafont
Le 20/02/2012 14:14, Luc Habert a écrit :
En fait, j'utilisais REPLY pour vraiment conserver à 100% la saisie
exacte de l'utilisateur. En effet, avec ton code, si l'utilisateur
saisit ça " aaa " (des espaces, des a, puis des espaces), alors dans
la variable mdp les espaces de début et de fin ne sont pas conservés.
Ah flute alors
Ben non pourquoi flûte, au contraire ?
. Mettre
OLDIFS=$IFS
IFS >
avant, et
IFS=$OLDIFS
après pour qu'il ne s'amuse pas à trimmer.
Mais dans le cas de la saisie d'un mot de passe, cette non-conservation
est souhaitable.
Bah non, on peut très bien mettre un espace dans un passwd.
Oui mais les espaces à l'intérieur du mot de passe eux sont bien
conservés avec « read -r mdp », pas de souci. Seuls les espaces du début
et de la fin sont enlevés. Moi, je trouve ça bien : mettre un espace à
l'intérieur de son mot de passe ok, mais mettre des espaces au début
et/ou à la fin de son mot de passe là franchement je trouve que ce n'est
pas très « catholique ». :-)
En fait, j'utilisais REPLY pour vraiment conserver à 100% la saisie exacte de l'utilisateur. En effet, avec ton code, si l'utilisateur saisit ça " aaa " (des espaces, des a, puis des espaces), alors dans la variable mdp les espaces de début et de fin ne sont pas conservés.
Ah flute alors
Ben non pourquoi flûte, au contraire ?
. Mettre
OLDIFS=$IFS IFS > avant, et
IFS=$OLDIFS
après pour qu'il ne s'amuse pas à trimmer.
Mais dans le cas de la saisie d'un mot de passe, cette non-conservation est souhaitable.
Bah non, on peut très bien mettre un espace dans un passwd.
Oui mais les espaces à l'intérieur du mot de passe eux sont bien conservés avec « read -r mdp », pas de souci. Seuls les espaces du début et de la fin sont enlevés. Moi, je trouve ça bien : mettre un espace à l'intérieur de son mot de passe ok, mais mettre des espaces au début et/ou à la fin de son mot de passe là franchement je trouve que ce n'est pas très « catholique ». :-)