標準入力からデータを取得する perl スクリプトを ssh 経由でリモートで実行しようとしています。トリッキーな部分は、スクリプト自体をリモート サーバーにアップロードしたくないということです。リモート スクリプトが stdin から読み取るデータは、ローカルで実行される別の perl スクリプトによって生成されます。
次のように仮定します。
- データを生成するローカル スクリプトは cron_extract_section.pl と呼ばれます
- リモートで実行される私のローカル スクリプトは cron_update_section.pl と呼ばれます
- どちらのスクリプトも、コマンド ラインで 1 つの引数、つまり単純な単語を取ります。
スクリプトがリモート マシンに存在する場合は、スクリプトをリモートで実行できます。
./cron_extract_section.pl ${SECTION} 2> /dev/null | ssh user@remote ~/path/to/remote/script/cron_update_section.pl ${SECTION}
また、次の構文を使用して、最初にアップロードしなくてもリモートサーバーでスクリプトを実行できることも知っています。
ssh user@remote "perl - ${SECTION}" < ./cron_update_section.pl
私が理解できないのは、ローカル スクリプト cron_update_section.pl を ssh 経由で perl にフィードする方法と、ローカル スクリプト cron_extract_section.pl の結果を perl にパイプする方法です。
私は次のことを試しました.perlスクリプトは正常に実行されますが、標準入力から読み取るものはありません:
./cron_extract_section.pl ${SECTION} 2> /dev/null | ssh user@remote perl - ${SECTION} < ./cron_update_section.pl
スクリプトを変更せずにそれが可能かどうか知っていますか?