The SSH server running on those routers does not follow the standard. Read the entry "Connecting to switches, routers, etc." from the module FAQ (https://metacpan.org/module/Net::OpenSSH#FAQ) for an explanation of what is going wrong. A workaround may be to add a "quit" or "exit" command to explicitly end the session. For instance: @output = $ssh->capture("$cmd\nexit\n"); if that doesn't work, try this: @output = $ssh->capture({stdin_data => "$cmd\nexit\n"}); otherwise you will have to use Expect to wait for the session prompt, send the command, get the output until you get the prompt again and close the connection.