Bash komut dosyalarındaki şifreleri terminalde gösterilmeyen araçlar gibi nasıl okunur?
(Yazı tipini siyah üzerine siyah olarak değiştirmek, kopyalaması ve yapıştırması kolay olabilir - bu yüzden çözüm değildir)
Bash komut dosyalarındaki şifreleri terminalde gösterilmeyen araçlar gibi nasıl okunur?
(Yazı tipini siyah üzerine siyah olarak değiştirmek, kopyalaması ve yapıştırması kolay olabilir - bu yüzden çözüm değildir)
Yanıtlar:
Gönderen help read
:
-s do not echo input coming from a terminal
man read
, check-in yapmadım help read
. Bunu bildiğim iyi oldu.
man bash
ve orada -s seçeneği bulabilirsinizSilent mode. If input is coming from a terminal, characters are not echoed.
Her zaman kullandım stty -echo
okumak, sonra yankısını açıp kapatmak ve daha sonra yapılacak stty echo
(adamı görüntüleyerek fazla okumak stty
- yani man stty
). Bu, bir programcı perspektifinden daha yararlıdır, çünkü yankıyı kapatıp standart stdin "okuyucuları" ile Java, C (++), Python vb. Gibi bir programlama dilinden bir parola okuyabilirsiniz.
Bash'da, kullanım şöyle görünebilir:
echo -n "USERNAME: "; read uname
echo -n "PASSWORD: "; stty -echo; read passwd; stty echo; echo
program $uname $passwd
passwd= # get rid of passwd
Örneğin Python şöyle görünecektir:
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)
Bunu Python'da birçok kez yapmak zorunda kaldım, bu yüzden bu açıdan oldukça iyi biliyorum. Bununla birlikte, bu diğer dillere tercüme etmek çok zor değil.
termios
,stty
,read -s
, iste şey.