If you want to interface yourself to the passwd program you should use some Expect module. Take a look on CPAN, I can't suggest any Expect module because search.cpan.org is currently unreachable for me.
Otherwise, you can calculate a "crypt string" by means of the crypt function and then substitute the it to the password string in the /etc/passwd file.
Maybe this quick-and-dirty script could help you getting started; I use it to calculate a crypt string, given the password:
#!/usr/bin/perl
print "Password? > " ;
$_ = <STDIN> ;
chomp ;
srand ;
print crypt($_,
join('',('.', '/', 0..9,'A'..'Z', 'a'..'z')[rand 64, rand
+64])),
"\n" ;
Ciao! --bronto
Update: just a note: the srand was needed to make the script run correctly on some old IBM machines that ran Perl 4.
The very nature of Perl to be like natural language--inconsistant and full of dwim and special cases--makes it impossible to know it all without simply memorizing the documentation (which is not complete or totally correct anyway).
--John M. Dlugosz |