कैसे उपकरणों पर एक तरह से बैश स्क्रिप्ट में पासवर्ड पढ़ने के लिए जो इसे टर्मिनल पर नहीं दिखा रहे हैं?
(फ़ॉन्ट को काले रंग में बदलने के लिए कॉपी और पेस्ट करना आसान हो सकता है - इसलिए इसका कोई हल नहीं है)
कैसे उपकरणों पर एक तरह से बैश स्क्रिप्ट में पासवर्ड पढ़ने के लिए जो इसे टर्मिनल पर नहीं दिखा रहे हैं?
(फ़ॉन्ट को काले रंग में बदलने के लिए कॉपी और पेस्ट करना आसान हो सकता है - इसलिए इसका कोई हल नहीं है)
जवाबों:
से help read
:
-s do not echo input coming from a terminal
man read
, मैं में जाँच नहीं है help read
। जानकार अच्छा लगा।
man bash
होगा और वहां आपको -s विकल्प मिल सकता हैSilent 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
, कुछ भी है कि यह करता है।