Перенаправление stdin / stdout на / с удаленного хоста через ssh - PullRequest
1 голос
/ 16 апреля 2011

Я пытаюсь написать Perl-скрипт, который перенаправляет свой стандартный ввод на удаленный компьютер и одновременно перенаправляет стандартный вывод удаленного компьютера на свой стандартный вывод:

callingProgram <--> myScript <--> sshTunnelToRemote

См. thisвопрос и ответ bdonlan для целей сценария.

Сначала я попытался использовать функцию open2() из библиотеки IPC, но по причинам, описанным здесь , это не похожечтобы быть хорошим подходом, у меня даже не работала простая команда grep.

Моя вторая идея состояла в том, чтобы использовать библиотеки Net::SSH::Perl или Expect, но они недоступны вмашина, на которой должен выполняться скрипт, и я не могу устанавливать библиотеки там.

Так что мой вопрос в том, что может быть простым способом добиться того, чего я хочу?Решения, использующие [ba] sh или даже C ++, также возможны.Целевой платформой является Solaris 10.

Ответы [ 2 ]

2 голосов
/ 16 апреля 2011

Похоже, что вы, вероятно, можете обойтись ничем иным, как system() - не передавайте данные из вашего стандартного ввода в стандартный ssh ​​и из своего стандартного вывода в стандартный вывод ssh; просто позвольте ssh наследовать ваш стандартный и стандартный вывод. Если вам не нужно каким-либо образом изменять данные в пути.

0 голосов
/ 17 апреля 2011

cpanminus может сделать это за вас

Продолжительность:

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

Теперь вы можете решить свою проблему, используя правильные инструменты (например, Net::SSH::Perl).

Мощью perl является cpan, а cpanminus дает вам возможность устанавливать все, что вам нужно, даже если у вас нет разрешения на установку в общесистемные библиотеки.

Прочитайте документацию к модулю для получения полной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...