Password Prompting in Perl?
William O'Higgins
william.ohiggins-H217xnMUJC0sA/PxXw9srA at public.gmane.org
Sat May 15 04:12:53 UTC 2004
On Fri, May 14, 2004 at 11:42:03PM -0400, Marcus Brubaker wrote:
>Anyone know an easy way to prompt for a password at the command line in
>perl? I need to be able to get the string without the terminal echoing
>back what is typed but I've failed to find anything online. Any help
>would be appreciated.
Here's what I found in the Perl Cookbook:
15.10. Reading Passwords
Problem
You want to read input from the keyboard without the keystrokes being
echoed on the screen. For instance, you want to read passwords as passwd
does, i.e. without displaying the user's password.
Solution
Use the CPAN module Term::ReadKey, set the input mode to noecho, and
then use ReadLine:
use Term::ReadKey;
ReadMode('noecho');
$password = ReadLine(0);
Discussion
Example 15.3 shows how to verify a user's password. If your system uses
shadow passwords, only the superuser can get the encrypted form of the
password with getpwuid. Everyone else just gets * as the password field
of the database, which is useless for verifying passwords.
Example 15.3: checkuser
#!/usr/bin/perl -w
# checkuser - demonstrates reading and checking a user's password
use Term::ReadKey;
print "Enter your password: ";
ReadMode 'noecho';
$password = ReadLine 0;
chomp $password;
ReadMode 'normal';
print "\n";
($username, $encrypted) = ( getpwuid $< )[0,1];
if (crypt($password, $encrypted) ne $encrypted) {
die "You are not $username\n";
} else {
print "Welcome, $username\n";
}
See Also
The documentation for the Term::ReadKey module from CPAN; the
crypt and getpwuid functions in Chapter 3 of Programming Perl
and in perlfunc (1), which demonstrate using the stty (1) command;
your system's crypt (3) and passwd (5) manpages (if you have them)
--
yours,
William
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://gtalug.org/pipermail/legacy/attachments/20040515/9381c11e/attachment.sig>
More information about the Legacy
mailing list