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

发布于 2024-11-01 09:37:11 字数 729 浏览 1 评论 0原文

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

callingProgram <--> myScript <--> sshTunnelToRemote

请参阅 这个问题 和 bdonlan 出于脚本目的的回答。

首先,我尝试使用 IPC 库中的 open2() 函数,但由于描述的原因here 这似乎不是一个好方法,我什至没有让一个简单的 grep 命令起作用。

我的第二个想法是使用 Net::SSH::PerlExpect 库,但它们在应该执行脚本的计算机上不可用,并且我无法在那里安装库。

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

I'm trying to write a perl script that redirects its stdin to a remote machine and at the same time redirects the stdout of the remote machine to its stdout:

callingProgram <--> myScript <--> sshTunnelToRemote

See this question and bdonlan's answer for the purpose of the script.

First I tried to use the open2() function from the IPC library but for reasons described here it doesn't seem to be a good approach, I didn't even get a simple grep command working.

My second idea was to use the Net::SSH::Perl or the Expect libraries but they're not available on the machine where the script is supposed to be executed and I can't install libraries there.

So my question is what could be a simple way to achieve what I want? Solutions using [ba]sh or even C++ are also possible. The targeted platform is Solaris 10.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苯莒 2024-11-08 09:37:11

看起来你可能只需要 system() 就可以逃脱惩罚——不要将数据从你的 stdin 传递到 ssh 的 stdin 以及从你的 stdout 传递到 ssh 的 stdout;只需让 ssh 继承您的标准输入和标准输出即可。除非您需要以某种方式修改传输中的数据。

Seems like you could probably get away with nothing more than system() — don't pass the data from your stdin to ssh's stdin and from your stdout to ssh's stdout; just let ssh inherit your stdin and stdout. Unless you need to modify the data in transit somehow.

天荒地未老 2024-11-08 09:37:11

cpanminus 可以为您完成此操作

运行:

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

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

Perl 的强大之处在于 cpan,cpanminus 使您能够安装所需的任何内容,即使您没有安装到系统范围库的权限。

阅读模块文档了解完整详细信息。

cpanminus can do this for you

Running:

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

Now you can try your problem using the right tools (e.g. Net::SSH::Perl).

The power of perl is cpan, and cpanminus gives you the ability to install whatever you need even if you don't have permission to install to the system-wide libraries.

Read the module documentation for the full details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文