我正在尝试编写一个perl脚本,将其stdin重定向到远程计算机,同时将远程计算机的stdout重定向到其标准输出:
callingProgram <--> myScript <--> sshTunnelToRemote
出于脚本的目的,请参阅this question和bdonlan的答案。
首先我尝试使用IPC库中的open2()
函数,但出于here所述的原因,这似乎不是一个好方法,我甚至没有得到一个简单的{{1命令工作。
我的第二个想法是使用grep
或Net::SSH::Perl
库,但它们在应该执行脚本的机器上不可用,我无法在那里安装库。 / p>
所以我的问题是什么可以成为实现我想要的简单方法?使用[ba] sh甚至C ++的解决方案也是可能的。目标平台是Solaris 10。
答案 0 :(得分:2)
似乎你可能只能通过system()
逃脱 - 不要将数据从你的stdin传递到ssh的stdin,从你的stdout传递给ssh的stdout;让ssh 继承你的stdin和stdout。除非您需要以某种方式修改传输中的数据。
答案 1 :(得分:0)
运行:
cd ~/bin
curl -LO http://xrl.us/cpanm
chmod +x cpanm
现在,您可以使用正确的工具(例如Net::SSH::Perl
)来尝试您的问题。
perl的强大功能是cpan,即使您没有安装到系统范围的库的权限,cpanminus也能让您安装所需的任何内容。
阅读the module documentation了解完整详情。