画面に表示せずにBashスクリプトからパスワードを読む

画面に表示せずにBashスクリプトからパスワードを読む

ツールが端末にパスワードを表示しない方法でbashスクリプトからパスワードを読み取るにはどうすればよいですか?

(フォントはコピーして貼り付けると簡単に黒の背景に黒に変わることができるので、これは解決方法ではありません。)

答え1

からhelp read

-s        do not echo input coming from a terminal

たとえば、ユーザーにメッセージを表示し、任意のパスワードを変数として読み取るにはpasswd

IFS= read -s -p 'Password please: ' passwd

答え2

stty -echo私はいつもエコをオフにして読んでから習慣を作りますstty echostty詳細については男を見ながら読んでくださいman stty)。プログラマの観点から見ると、これはエコーをオフにし、標準入力「リーダー」を使用してJava、C(++)、Pythonなどのプログラミング言語からパスワードを読み取ることができるため、より便利です。

Bashでの使用法は次のとおりです。

echo -n "USERNAME: "; IFS= read -r uname
echo -n "PASSWORD: "; stty -echo; IFS= read -r passwd; stty echo; echo
program "$uname" "$passwd"
unset -v passwd    # get rid of passwd

たとえば、Pythonは次のようになります。

from sys import stdout
from os import system as term

uname = raw_input("USERNAME: ") # read input from stdin until [Enter] in 2
stdout.write("PASSWORD: ")
term("stty -echo") # turn echo off
try:
    passwd = raw_input()
except KeyboardInterrupt: # ctrl+c pressed
    raise SystemExit("Password attempt interrupted")
except EOFError: # ctrl+d pressed
    raise SystemExit("Password attempt interrupted")
finally:
    term("stty echo") # turn echo on again

print "username:", uname
print "password:", "*" * len(passwd)

私はPythonでこれを何度もやってきたので、そのような観点からはかなりよく知っています。しかし、他の言語に翻訳することは難しくありません。

答え3

外部依存関係を追加する場合は、ダイアログボックスやホイップテールなどのツールで提供されるパスワードボックスを使用できます。

鞭尾魚

答え4

あなたの質問は、「ツールまたはどのような方法で???」と読み取られ、これがあなたに適用されるのかわかりません。

system1 $ passwd=abc123
system1 $ printf "%s\n" "${passwd//?/*}"
******

関連情報