The Mason elements of the script appear to be in order.  I have a
feeling the problem is in the way you're using Net::SSH.
Unfortunately, I don't have any experience with Net::SSH and the
Net::SSH documentation on CPAN is pretty sparse.

On Tue, May 13, 2008 at 10:20 AM, Greg Evans <[EMAIL PROTECTED]> wrote:
>  sshopen2('root@<my_ip>', *READER, *WRITER, $command) ||die "UNABLE TO
>
> ESTABLISH CONNECTION!: $!";

There are a few of ways in which this call could fail.  In any case I
would have expected the author of Net::SSH to cause the sshopen2 call
to return a non-true value and trigger your die statement.

However, Net::SSH uses the underlying ssh command installed on your
system.  There are a couple of situations where ssh waits for user
input.  It's possible that this waiting is relayed by Net::SSH and its
waiting for you to provide input on the *WRITER file handle.  Since
you mentioned that you have tried running the script as the web server
user it doesn't seem likely that either** of these is causing your
problem.

Its still likely that the call to sshopen2 isn't going as expected.  I
noticed that the sshopen2 call doesn't provide a handle for STDERR of
the ssh process and the documentation doesn't say where this should
go.  If you haven't already, check your apache error log for messages
from the underlying ssh process.  If you don't find anything it's
possible that Net::SSH isn't relaying messages properly.

Try replacing the Net::SSH code with a simple backticks system call:

<%perl>
my @output = `ssh root@<my_ip> ping -c1 $pingserver 2>&1`;
$m->print(join '<br />', "Here it is: ", @output, "There it was");
</%perl>

This will attempt to do pretty much the same thing as above, but the
STDERR of the ssh process will be captured in @output along with
STDOUT.  If it works then the problem is probably somewhere within
Net::SSH.  If not you may get an important message that is getting
lost somewhere by the Net::SSH version.

-- Ben

** One such situation is that you don't have SSH key's properly
installed for the user that is running your web server.  In this case
Net::SSH could be waiting for you to provide a password on *WRITER.

The second situation is when the webserver user has never before
negotiated an SSH connection with the server at <my_ip>.  In this
situation ssh usually asks if you wan't to accept the server key.  In
this situation it might wait for you to say "yes" on the *WRITER
handle.


P.P.S.: I wouldn't allow ssh access to root on any of your servers.
Some people think that this restriction is merely an attempt at
security through obscurity, however it requires anyone who wants to
infiltrate your system to do more work to cover their tracks giving
them more opportunities to get caught.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft 
Defy all challenges. Microsoft(R) Visual Studio 2008. 
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Mason-users mailing list
Mason-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mason-users

Reply via email to