From: David Wright Date: 2011-10-06T01:49:16+09:00 Subject: Re: How to use 'net/ssh' to sudo su - unknown wrote in post #1025130: > On Wed, Oct 5, 2011 at 4:45 AM, Ivan C. wrote: >> permission. My guess is the sudo su - does not actually works. > A simpler test case: > ssh = Net::SSH.start("host", "user", :password =>"xxxx") > puts ssh.exec!('ls -la /root') > puts ssh.exec!('sudo ls -la /root') > > Running sudo over ssh generally requires that a pseudo-tty be allocated: > > $ ssh XXX ls -la /root > ls: /root: Permission denied > > $ ssh XXX sudo ls -la /root > sudo: sorry, you must have a tty to run sudo > > $ ssh -t XXX sudo ls -la /root > drwxr-x--- 7 root root 4096 Sep 22 12:20 . > drwxr-xr-x 25 root root 4096 Sep 16 14:49 .. > -rw------- 1 root root 1856 Jun 8 14:41 anaconda-ks.cfg > i am trying to ssh to a server and execute some commands. To do that, i > need to become a root user and somehow it does not work with below. So, if your interest is in learning/playing with Net::SSH, carry on. Another cool tool for this sort of thing is 'expect', i'm sure there is a ruby lib for expect but I've never used it. If you are trying to get some work done, another approach is to edit the sudoers file on the remote host. Add the commands that you want your unprivileged user to be able to execute (or put them all in an executable .sh file). for this you may want the nopassword option. -- Posted via http://www.ruby-forum.com/.