OVH Cloud OVH Cloud

script bash : demander à l'utilisateur de saisir mot de passe sans qu'il s'affic he etc.

13 réponses
Avatar
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 ?

Merci d'avance pour votre aide.


--
François Lafont

3 réponses

1 2
Avatar
Cem
YBM writes:

Le 20.02.2012 13:07, Francois Lafont a écrit :
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



read -s mdp
ne répond pas directement au besoin?
--
Cem
Avatar
Sergio
Le Wed, 22 Feb 2012 10:09:10 +0100, François Lafont a écrit :

J'aurais dû le voir car c'est bien évidemment écrit dans la page de
manuel du bash. Merci pour l'info Cem.



Pas besoin du man (le "man bash" est assez épais...).
help read|less

suffit. (et pareil pour les autres commandes intégrées de bash).

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
Cem
Le 22-02-2012, François Lafont a écrit :
En effet, -s semble faire exactement ce que je veux :

#------------------------------------
echo -n "Votre mot de passe : "
read -s -r mdp
#------------------------------------


Ou plus simplement encore en une seule instruction
read -p "Votre mot de passe : " -s -r mdp

Après, par rapport à la solution de YBM, je ne suis pas expert mais il
est probable que l'option -s de read ne soit pas quelque chose de très
portable (ce qui n'est pas trop grave dans mon cas).



L'option -s n'existe effectivement que dans bash et pas dans sh.
Il est donc impératif de débuter le script par
#!/bin/bash
et non par
#!/bin/sh
pour que cela fonctionne sur un système dont le shell standard ne serait pas
bash. Et cela ne fonctionnera du coup que si bash est installé.

--
Cem
1 2