Comment puis-je lire un mot de passe à partir de la ligne de commande en Ruby?
Je suis en cours d'exécution Ruby et MySQL sur une machine Windows.
J'ai quelques portions de code qui doit se connecter à une base de données MySQL un procédez à une sélection. Pour se connecter à la base de données j'ai besoin de fournir le mot de passe, entre autres choses.
Le code Ruby peut afficher un message vous demandant le mot de passe, l'utilisateur saisit le mot de passe et de frappe de la touche Entrée. Ce dont j'ai besoin est pour le mot de passe, tel qu'il est tapé, pour être affiché comme une ligne d'astérisques.
Comment puis-je obtenir Ruby pour afficher le mot de passe tapé une ligne d'astérisques dans la "fenêtre dos"?
Vous devez vous connecter pour publier un commentaire.
Pour répondre à ma propre question, et pour le bénéfice de toute autre personne qui voudrait savoir, il y a un Rubis gemme appelé HighLine que vous avez besoin.
Pauvre homme solution:
Ou à l'aide de http://raa.ruby-lang.org/project/ruby-password/
Edit: Oups j'ai manqué de remarquer que vous en avez besoin pour Windows 🙁
Selon la Highline doc, cela semble fonctionner. Vous ne savez pas si cela va fonctionner sur Windows.
Voici le résultat sur la console:
ruby
commande, vous n'avez pas besoin de la#!/usr/local/bin/ruby
, si vous exécutez le script directement, avec./highline.rb
, vous.Les ouvrages suivants (lobin.rb) en ruby pas jruby
De sortie de la console:
Mais si je lance en jruby il échoue et ne donne aucune chance à saisir votre mot de passe.
Départ de Ruby 2.3, vous pouvez utiliser le
IO#getpass
méthode en tant que telle:http://ruby-doc.org/stdlib-2.3.0/libdoc/io/console/rdoc/IO.html#method-i-getpass
Ci-dessus est copié à partir d'un supprimée réponse par Zoran Majstorovic.
La fancy_gets gem a un mot de passe chose qui fonctionne très bien avec jruby:
https://github.com/lorint/fancy_gets
Code se termine comme: