通过ssh将stdin / stdout重定向到远程主机或从远程主机重定向

时间:2011-04-16 16:35:59

标签: perl proxy ssh redirect

我正在尝试编写一个perl脚本,将其stdin重定向到远程计算机,同时将远程计算机的stdout重定向到其标准输出:

callingProgram <--> myScript <--> sshTunnelToRemote

出于脚本的目的,请参阅this question和bdonlan的答案。

首先我尝试使用IPC库中的open2()函数,但出于here所述的原因,这似乎不是一个好方法,我甚至没有得到一个简单的{{1命令工作。

我的第二个想法是使用grepNet::SSH::Perl库,但它们在应该执行脚本的机器上不可用,我无法在那里安装库。 / p>

所以我的问题是什么可以成为实现我想要的简单方法?使用[ba] sh甚至C ++的解决方案也是可能的。目标平台是Solaris 10。

2 个答案:

答案 0 :(得分:2)

似乎你可能只能通过system()逃脱 - 不要将数据从你的stdin传递到ssh的stdin,从你的stdout传递给ssh的stdout;让ssh 继承你的stdin和stdout。除非您需要以某种方式修改传输中的数据。

答案 1 :(得分:0)

cpanminus can do this for you

运行:

cd ~/bin
curl -LO http://xrl.us/cpanm
chmod +x cpanm

现在,您可以使用正确的工具(例如Net::SSH::Perl)来尝试您的问题。

perl的强大功能是cpan,即使您没有安装到系统范围的库的权限,cpanminus也能让您安装所需的任何内容。

阅读the module documentation了解完整详情。