টার্মিনালে প্রদর্শিত না হওয়া সরঞ্জামগুলির মতো এমনভাবে কীভাবে ব্যাশ স্ক্রিপ্টগুলিতে পাসওয়ার্ড পড়তে হয়?
(ফন্টকে কালো রঙে পরিবর্তন করা অনুলিপি করে সহজেই অনুলিপি করে পেস্ট করতে পারে - সুতরাং এটি সমাধান নয়)
টার্মিনালে প্রদর্শিত না হওয়া সরঞ্জামগুলির মতো এমনভাবে কীভাবে ব্যাশ স্ক্রিপ্টগুলিতে পাসওয়ার্ড পড়তে হয়?
(ফন্টকে কালো রঙে পরিবর্তন করা অনুলিপি করে সহজেই অনুলিপি করে পেস্ট করতে পারে - সুতরাং এটি সমাধান নয়)
উত্তর:
থেকে help read:
-s do not echo input coming from a terminal
man read, আমি চেক ইন করিনি help read। জানা ভাল.
man bashSilent mode. If input is coming from a terminal, characters are not echoed.
আমি সর্বদা stty -echoপ্রতিধ্বনি বন্ধ করে দিতাম, তারপরে পড়তাম এবং তারপরে করতাম stty echo(ম্যান অফ দেখে stty- আরও পড়ুন man stty)। এটি প্রোগ্রামারদের দৃষ্টিভঙ্গি থেকে আরও কার্যকর কারণ আপনি প্রতিধ্বনি বন্ধ করতে পারেন এবং তারপরে জাভা, সি (++), পাইথন ইত্যাদির মতো প্রোগ্রামিং ভাষা থেকে পাসওয়ার্ড পড়তে পারেন তাদের "স্ট্যান্ডার্ড স্ট্যান্ডিন" দিয়ে।
ব্যাশে, ব্যবহারটি দেখতে এইরকম হতে পারে:
echo -n "USERNAME: "; read uname
echo -n "PASSWORD: "; stty -echo; read passwd; stty echo; echo
program $uname $passwd
passwd= # get rid of passwd
পাইথন উদাহরণস্বরূপ:
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)
পাইথনে আমাকে অনেক সময় এটি করতে হয়েছিল, তাই আমি এটিকে দৃষ্টিকোণ থেকে বেশ ভাল জানি। যদিও অন্য ভাষায় অনুবাদ করা খুব কঠিন নয়।
termios,stty,read -s, কিছু যে এটা আছে।