Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re^7: SSH to remote subsystem (Net::OpenSSH?)

by alrighttheresham (Initiate)
on Sep 10, 2014 at 13:39 UTC ( [id://1100136]=note: print w/replies, xml ) Need Help??


in reply to Re^6: SSH to remote subsystem (Net::OpenSSH?)
in thread SSH to remote subsystem (Net::OpenSSH?)

@sojourner9

I'm using your code snippet to talk to a NETCONF Agent. The problem I'm having is that the response is only showing the hello response, nothing else. For my second query I have sent a get-config and can see that processed on the Agent and a log entry confirming that it sent the response.

Would it be possible for you to append your mainline is case something has got missed?

Below is the merged content from the thread above that I'm using.

... ## PRINT THE RESULTS while (<$in>) { print; last if $_ =~ m/\/nf:rpc-reply/; }; close $in; close $out; waitpid($pid, 0); exit;

Replies are listed 'Best First'.
Re^8: SSH to remote subsystem (Net::OpenSSH?)
by salva (Canon) on Sep 10, 2014 at 13:47 UTC
    Try closing $out before reading from $in or adding a new line after the last end-of-command marker.
      Thankyou @salva. Closing the out pipe worked, but adding a newline didnt. Code snippet below.
      ## SEND THE QUERY FOR THE CONFIG $message = qq~ <?xml version="1.0" encoding="UTF-8"?> <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1"> <get-config><source><running/></source></get-config> </rpc> ]]>]]>~; print $out $message; close $out; ## PRINT THE RESULTS while (<$in>) { print; last if $_ =~ m/\/nf:rpc-reply/; } close $in; waitpid( $pid, 0 ); exit;

      If I wanted to keep the $out pipe open so that further messages could be sent is there some sort of flush (I assume this is what you expected the newline to do) that could be used? I looked at the Net:OpenSSH docs in the open_ex section but dont see anything that suggests this can be done.

      If this is not possible should I close and recreate the open_ex for every req/res I send?

      Thanks for the prompt response, apologies if the questions are naive, perl newbie.

        The returned $out is a regular file handle. You can just set it in autoflushing mode using $out->autoflush(1).

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1100136]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (5)
As of 2024-03-29 01:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found