638 votes

Comment obtenir un mot de passe d'un script shell sans écho

J'ai un script qui automatise un processus qui a besoin d'accéder à un mot de passe système protégé. Le système est accessible via un programme de ligne de commande qui accepte le mot de passe utilisateur en tant qu'argument.

Je voudrais inviter l'utilisateur à saisir son mot de passe, l'affecter à une variable du shell, et ensuite utiliser cette variable pour construire la ligne de commande de l'accès à un programme (qui sera bien entendu de produire des flux de sortie que je vais le processus).

Je suis raisonnablement compétente shell programmeur en Bourne/Bash, mais je ne sais pas comment faire pour accepter l'entrée de l'utilisateur sans le faire écho à la borne (ou peut-être avoir un écho en utilisant '*' caractères).

Quelqu'un peut-il aider?

912voto

wsware Points 933

Voici une autre façon de le faire:

 #!/bin/bash
# Read Password
echo -n Password: 
read -s password
echo
# Run Command
echo $password
 

Les read -s désactiveront l'écho pour vous. Il suffit de remplacer les echo de la dernière ligne par la commande à exécuter.

316voto

thecloud Points 199
#!/bin/bash
stty -echo
printf "Password: "
read PASSWORD
stty echo
printf "\n"

127voto

smendola Points 851

Bon mot:

 read -s -p "Password: " password
 

Sous Linux (et cygwin), cette forme fonctionne sous bash et sh. Ce n'est peut-être pas un sh standard Unix, cependant.

Pour plus d'informations et d'options, dans bash, tapez "help read".

 $ help read
read: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
Read a line from the standard input and split it into fields.
  ...
  -p prompt output the string PROMPT without a trailing newline before
            attempting to read
  ...
  -s                do not echo input coming from a terminal
 

5voto

Désactivez echo en utilisant stty , puis rallumez-le après.

-1voto

Marco Marsala Points 128
echo yourpassword | passwd --stdin youruser

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X