資格情報をディスクに完全に書き込むのを避けたい。環境変数から資格情報を読みたいです。ただし、一部のスクリプトでは、その資格情報を読み取るには、ディスクに資格情報ファイルが必要です。バイナリファイルの場合、特に扱いにくく、スクリプトを修正する方法もありません。そして、他の場所で読むことができるcliオプションもありません。 gam(Google App Manager)がそのような例の1つです。
質問:保存された資格情報の値を期待するバイナリを何らかの方法で環境変数から抽出する方法はありますか?
理想的なソリューションはLinux / Unixで動作するはずです。
答え1
カーニバルプロセスの交換ファイルのように動作します。
some-program-that-reads-a-file <(echo "$MY_ENV_VAR")
#..............................^^..................^
以下は、プログラムがプロセス置換をどのように見るかについてのデモです。 awkを使用して引数を印刷します。
$ awk 'BEGIN {for (i=0; i<ARGC; i++) print i, ARGV[i]}' <(echo $HOME)
0 awk
1 /dev/fd/63
他のシェルはプロセスの置き換えに異なる構文を使用します。
- 扱いにくい
some-program =(echo $VAR)
- 魚
some-program (echo $VAR | psub)
- ksh、bashと同じ
特定のファイルが必要な場合は、FIFOを使用してください。
mkfifo ~/tmp/creds-file.pem
printf '%s' "$var" > ~/tmp/creds-file.pem &
cat ~/tmp/creds-file.pem
答え2
これは安全に実行できるかどうかはわかりませんが(たとえば、他のプロセスが最初にFIFOを読み取ることができる)、試してみる価値があるかもしれません。 FIFOを使用して1つecho
ずつ実行してみてください。
mkfifo ~/tmp/creds-file.pem
echo "$env_var" > ~/tmp/creds-file.pem & run_application_that_reads_from_file
rm ~/tmp/creds-file.pem