Как читать пароли в скриптах bash, как инструменты, которые не отображаются на терминале?
(Менять шрифт на черный на черном может быть сложно, просто скопировать и вставить - так что это не решение)
Как читать пароли в скриптах bash, как инструменты, которые не отображаются на терминале?
(Менять шрифт на черный на черном может быть сложно, просто скопировать и вставить - так что это не решение)
Ответы:
От help read
:
-s do not echo input coming from a terminal
man read
, я не зарегистрировался help read
. Хорошо знать.
man bash
там вы можете найти опцию -sSilent mode. If input is coming from a terminal, characters are not echoed.
Я всегда 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, поэтому я знаю это довольно хорошо с этой точки зрения. Это не очень сложно перевести на другие языки.
termios
,stty
,read -s
, все , что делает это.