端末にパスワードを表示しないツールのような方法でbashスクリプトのパスワードを読み取る方法は?
(フォントを黒で黒に変更することは、簡単にコピーして貼り付けることが難しいため、解決策ではありません)
help read
:
-s do not echo input coming from a terminal
私はいつもstty -echo
エコーをオフにしてから読み取り、後でstty echo
(man of stty
を表示してさらに読む-man stty
)。エコーをオフにしてから、Java、C(++)、Pythonなどのプログラミング言語から標準のstdin「リーダー」でパスワードを読み取ることができるため、これはプログラマーの観点からより便利です。
Bashでは、使用法は次のようになります。
echo -n "USERNAME: "; read uname
echo -n "PASSWORD: "; stty -echo; read passwd; stty echo; echo
program $uname $passwd
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で何度もしなければならなかったので、その観点からはかなりよく知っています。ただし、他の言語に翻訳することはそれほど難しくありません。
あなたの質問は、「ツールのような方法で???」これがうまくいくかどうかは正確にはわかりません:
system1 $ passwd=abc123
system1 $ printf "%s\n" "${passwd//?/*}"
******