On Dec 1, 2:41 am, MonkeeSage <MonkeeS... / gmail.com> wrote:
> On Nov 30, 7:56 pm, Trey <treyb... / gmail.com> wrote:
>
> > I'm in need of running a system command as another user than the user
> > that is executing the ruby script.  Is this possible?  Can I execute
> > su (and somehow supply the correct password), then run the command?
>
> Here is a naive version using the built-in pty extension (*nix only,
> but since you mention su, I assume that's not a problem)...
>
> require "pty"
> require "expect"
>
> cmd = "sleep 1; sudo -u someuser ls 2>&1"
> PTY.spawn(cmd) { | stdin, stdout, pid |
>   stdin.expect(/Password:|/) { | result, pass |
>     stdout.write("secret_password\n") if pass
>   }
>   puts stdin.read
>
> }
>
> Regardsm
> Jordan

Oops...

>     stdout.write("secret_password\n") if pass

    stdout.write("secret_password\n") if pass == "Password:"