Victor Pezo wrote: > Hi, I am developing a program that sets passwd for any user but i > dont want the operator sets the passwd. I want to give it as a result > of a function > > [EMAIL PROTECTED] victor]$ perl passwd.pl victor1 > > #!/usr/bin/perl > $usuario=$ARGV[0]; > $passwd="PASSWDGENERATEBYOTHERFUNCTION" > `sudo /usr/sbin/useradd -c $usuario -s /sbin/nologin $usuario`; > `sudo /usr/bin/passwd $usuario`; > > I could add the user, but in the set passwd line. > When I use this script always I have a prompt of password assigment > that I dont want. Could you give me some light of what can I do?
The classic answer to this is to use the Expect module, because passwd(1) historically has read only from /dev/tty. However, if you're on Linux, passwd(1) has a --stdin option that lets you supply the password via standard input. So you could write something like (untested): system "echo \Q$passwd\E | sudo /usr/bin/passwd --stdin \Q$usario\E"; -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>