deployツールを作ろうとしていると、remoteのserverでsudoしたくなるんですが、Net::OpenSSHを使ってsudoするとパスワードの入力を求められて固まるということが起こります。今回はsudoに標準入力からパスワードを渡すオプションがあったので、それで解決しました。
my $ssh = Net::OpenSSH->new( 'hostname', user => 'username', ); my @cmd = ('ls', '/'); $ssh->capture2( { stdin_data => "password\n" }, join(' ', 'sudo', '-Sk', @cmd), );