in reply to SSH and expect without module
my $SSH = system "$ssh_cli $login $ip"; if ($SSH =~ /username/i) {
Sorry, this will not do what you expect. system waits until the command finishes, does not capture the command's output and does not allow interactive communication with the subprocess.
I would instead recommend the module Net::OpenSSH. Its documentation shows you how to integrate it with other modules such as Expect. Since you seem to want to connect to multiple remote machines to execute commands there, you might also take a look at Net::OpenSSH::Parallel (I haven't used it myself yet but I've heard good things).
without the possibility to install any module
I recommend you have a look at Yes, even you can use CPAN. If you really, really can't install any modules, you could have a look at my writeup on interacting with external commands here and you'd have to study perlipc, but I would strongly recommend you follow the above advice to use something like Net::OpenSSH instead. There was even a thread two days ago asking a question similar to yours, in which salva mentioned you can install it simply by copying over its lib directory.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: SSH and expect without module
by touriste75 (Acolyte) on Mar 16, 2017 at 13:41 UTC | |
by haukex (Archbishop) on Mar 16, 2017 at 19:29 UTC | |
by touriste75 (Acolyte) on Mar 19, 2017 at 09:09 UTC | |
by haukex (Archbishop) on Mar 19, 2017 at 11:49 UTC | |
by salva (Canon) on Mar 19, 2017 at 13:25 UTC |