#These two just exit after this command $result = `ssh-copy-id -i $path_publick_key $user\@$server 2>/dev/null + < "$password"`; $result = `ssh-copy-id -i $path_publick_key $user\@$server 2>/dev/null + < "$password\n"`; #This gives a password prompt, without me printing the $result, which +makes me think, that ssh is using some named output device, instead o +f stdout. #$result is empty: $result = `echo "$password"|ssh-copy-id -i $path_publick_key $user\@$s +erver 2>/dev/null`;
I can't figure out how to do it. I need to use only standard modules or no modules at all, as our organization policy requires. I was already thinking about 'expect' cli program, it's not installed by standard on the system and the 'Expect' perl module, also nonstandard, so can't use them.use IPC::Cmd qw{run}; $ssh_cp_id = ''; $ssh_cp_id_result = run( 'command'=>"ssh-copy-id -i $path_pk $user\@$server 2>/dev/null", 'buffer'=>\$ssh_cp_id ); if($ssh_cp_id_result){ #print has no effect, as the password prompt got already displayed + without being captured to the $ssh_cp_id: print $ssh_cp_id; }
In reply to I am having a big difficulty with two way pipes from a system executed command by igoryonya
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |