praveenzx has asked for the wisdom of the Perl Monks concerning the following question:

How to change linux root password without any prompt/interaction or using any perl script Now i have a script for doing this , but i need to convert it into perl



#!/usr/bin/expect -- # wrapper to make passwd be noninteractive # username is passed as 1st arg, passwd as 2nd # Executable only by root spawn passwd [lindex $argv 0] set pass [lindex $argv 1] expect "Enter new UNIX password:" sleep 1 send "$pass\r" expect "Retype new UNIX password:" sleep 1 send "$pass\r" expect eof #end script
please advice,
praveenzx~

Replies are listed 'Best First'.
Re: Change linux root passwor
by marto (Cardinal) on Jan 20, 2010 at 11:15 UTC
Re: Change linux root passwor
by rubasov (Friar) on Jan 20, 2010 at 11:38 UTC
    Just one more advice beyond marto's response: you should not pass the password to your script as a command line argument because it will appear in the output of ps (and in the /proc file system) and other users of the system can read it. Write it to the script and apply chmod 700 on it, or better read it from the standard input.
Re: Change linux root passwor
by JavaFan (Canon) on Jan 20, 2010 at 12:01 UTC
    The passwd I have on my Linux boxes has a --stdin command line option, allowing it to read the password from STDIN or a pipe.
Re: Change linux root passwor
by leocharre (Priest) on Jan 20, 2010 at 13:53 UTC
    Why convert to perl if expect is working for you? (non rhetorical)

    Sidenote.. This seems like playing with fire. Why have a machine alter a root pw? This is something one may desire if a machine's root pw changes on cron- synched via something else- say.. the new random pw is sent via some secure method to users every day/update-cycle.

    If instead this is a method to change multiple machine root pws from one other machine.. What are we trying to protect here? Access to the systems, or to the data the systems access? If it's to the data the systems access- maybe one system alone should have access directly- to that data- the other systems can maybe network mount/smb(samba) mount the partitions/shares remotely .. ? (Hm.. just imagining here- You probably already considered all of these things and more.)