リモートホストにプログラムがあり、その実行を自動化する必要があります。同じマシンでプログラムを実行するコマンドは次のとおりです。
/path/to/program -a file1.txt -b file2.txt
この場合、プログラム内でfile1.txt
およびがそれぞれまったく異なる目的で使用されるため、一緒に使用することfile2.txt
はできません。cat
しかし、私の場合、プログラムに渡したい合計はfile1.txt
私のデバイスにのみ存在し、プログラムを実行する必要があるホストには存在しません。file2.txt
SSHを介して少なくとも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
各コンテンツを各ファイルに表示されないコンテンツに個別に置き換えます。