stdinを介して(sshを介して)複数のファイルを渡す

stdinを介して(sshを介して)複数のファイルを渡す

リモートホストにプログラムがあり、その実行を自動化する必要があります。同じマシンでプログラムを実行するコマンドは次のとおりです。

/path/to/program -a file1.txt -b file2.txt

この場合、プログラム内でfile1.txtおよびがそれぞれまったく異なる目的で使用されるため、一緒に使用することfile2.txtはできません。catしかし、私の場合、プログラムに渡したい合計はfile1.txt私のデバイスにのみ存在し、プログラムを実行する必要があるホストには存在しません。file2.txtSSHを介して少なくとも1つのファイルを渡すことができることを知っていますstdin

cat file1.txt | ssh host.name /path/to/program -a /dev/stdin -b file2.txt

ただし、ホストにファイルを保存することは許可されていないため、file2.txtホストにアクセスできる方法も必要です。環境変数を乱用し、クリエイティブcatに一緒に使用することは可能かもしれませんがsed、これを達成するために使用する方法を理解するには、これらのツールについて十分に理解していません。可能ですか?達成する方法?

ベストアンサー1

プログラムに引数として提供されたファイルがテキストファイルであり、その内容を制御できる場合(ここには表示されていない行がわかっている)、ここで複数のドキュメントを使用できます。

{
    echo "cat /dev/fd/3 3<<'EOT' /dev/fd/4 4<<'EOT' /dev/fd/5 5<<'EOT'"
    cat file1
    echo EOT
    cat file2
    echo EOT
    cat file3
    echo EOT
} | ssh user@host sh

以下は、catファイル名を引数として使用するコマンドの例です。次のような場合もあります。

echo "/path/to/prog -a /dev/fd/3 3<<'EOT' -b /dev/fd/4 4<<'EOT'

EOT各コンテンツを各ファイルに表示されないコンテンツに個別に置き換えます。

おすすめ記事