Bagi siapa pun yang membaca ini: JANGAN membaca kata sandi dengan gema aktif dan hitam-hitam. Kata sandi masih ditransmisikan, dan jika terminal tidak mengetahui arahan terminal yang Anda gunakan, karakter akan bergema dengan jelas. Matikan gema. Gunakan termios, stty, read -s, apa pun yang melakukannya.
Alexios
Itu sebabnya saya menulis, bahwa itu bukan solusi;).
Grzegorz Wierzowiecki
Memang! Terkadang orang membaca sekilas pertanyaan dan sampai pada kesimpulan yang salah. :)
Bagus. Itu tidak tertulis di saya man read, saya belum check-in help read. Senang mendengarnya.
Grzegorz Wierzowiecki
3
@GrzegorzWierzowiecki: Anda melihat manual yang salah. Anda harus membaca manual bash yaitu man bashdan di sana Anda dapat menemukan opsi -sSilent mode. If input is coming from a terminal, characters are not echoed.
pradeepchhetri
5
Saya selalu stty -echomematikan gema, kemudian membaca dan setelah itu melakukan stty echo(baca lebih lanjut dengan melihat man stty- yaitu man stty). Ini lebih berguna dari perspektif pemrogram karena Anda dapat mematikan gema dan kemudian membaca kata sandi dari bahasa pemrograman seperti Java, C (++), Python, dll. Dengan stdin standar "pembaca".
Dalam bash, penggunaannya bisa seperti ini:
echo -n "USERNAME: "; read uname
echo -n "PASSWORD: "; stty -echo; read passwd; stty echo; echo
program $uname $passwd
passwd=# get rid of passwd
Python, misalnya, akan terlihat seperti:
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)
Saya harus melakukan ini berkali-kali dengan Python, jadi saya tahu itu cukup baik dari perspektif itu. Ini tidak terlalu sulit untuk diterjemahkan ke bahasa lain.
termios
,stty
,read -s
, apa pun yang melakukannya.Jawaban:
Dari
help read
:sumber
man read
, saya belum check-inhelp read
. Senang mendengarnya.man bash
dan di sana Anda dapat menemukan opsi -sSilent mode. If input is coming from a terminal, characters are not echoed.
Saya selalu
stty -echo
mematikan gema, kemudian membaca dan setelah itu melakukanstty echo
(baca lebih lanjut dengan melihat manstty
- yaituman stty
). Ini lebih berguna dari perspektif pemrogram karena Anda dapat mematikan gema dan kemudian membaca kata sandi dari bahasa pemrograman seperti Java, C (++), Python, dll. Dengan stdin standar "pembaca".Dalam bash, penggunaannya bisa seperti ini:
Python, misalnya, akan terlihat seperti:
Saya harus melakukan ini berkali-kali dengan Python, jadi saya tahu itu cukup baik dari perspektif itu. Ini tidak terlalu sulit untuk diterjemahkan ke bahasa lain.
sumber
Pertanyaan Anda berbunyi agak berbeda "dengan cara seperti alat ???" jadi saya tidak tahu persis apakah ini akan bekerja untuk Anda:
sumber