in reply to Re^13: Asynchronous Processing a command execution
in thread Asynchronous Processing a command execution

Corion, I have now finely settled down with my code and able to execute it fine.So her eI'm executing the same traceroute command which is forked out . I would like to have a command executed on the remote server via SSH and get the output streaming and display. Let me know if can give me a hint on how to go about this,since the SSH module I tried wasn't giving me a option to asynchronously process a command's output.

Replies are listed 'Best First'.
Re: SSH Command output
by Alfaromeo (Initiate) on Jul 08, 2008 at 12:50 UTC
    Hi It had been really confusing , however I have managed to do asynchronous SSH output using SSH Perl module. Here is teh code extract
    elsif (defined $pid) { close STDOUT; close STDERR; $ssh=Net::SSH::Perl->new("113.128.160.214"); $ssh->login($UNM,$Pass,'true'); $cmd="ls -l"; $ssh->register_handler(SSH_SMSG_STDOUT_DATA,sub{($ssh,$packetout)=@_;$ +cache->set($session,[0,$packetout->get_str])}); #$ssh->register_handler(SSH_SMSG_EXITSTATUS,sub{($ssh,$packetexit)=@_; +$cache->set($session,[1,$packetexit->get_str])}); ($stdout,$stderr,$exit)=$ssh->cmd($cmd);
    The above code returns me the standard output from the command executed over SSH.I would also like to print messages like connecting to the remotebox ,any errors occured while connection.I tried Standard Error message constant . but it did not return me anything worthwhile. Please advise
      close STDOUT; close STDERR; $ssh=Net::SSH::Perl->new("113.128.160.214"); $ssh->login($UNM,$Pass); $cmd="ping 114.9.36.142"; $ssh->register_handler(SSH_SMSG_STDOUT_DATA,sub{($ssh,$packetout)=@_;p +ush(@output,$packetout->get_str);$cache->set($session,[0,@output])}); #$ssh->register_handler(SSH_SMSG_EXITSTATUS,sub{($ssh,$packetexit)=@_; +$cache->set($session,[1,$packetexit->get_str])}); ($stdout,$stderr,$exit)=$ssh->cmd($cmd);
      The above code only prints for me the first 2 lines of the ping command after execution. What is wrong ?