web-dev-qa-db-ja.com

要求されたときにパスワードをアプリケーションにパイプする

以下はbashスクリプトで実行する必要があります。

curl --digest --user schmijos https://bitbucket.org/u/p/get/tip.Zip -o tip.Zip

curlにパスワードを要求されたときに、自動的にパスワードを送信するにはどうすればよいですか?ログファイルにパスワードを表示したくないので、次のことを行いますしません

curl --digest --user schmijos:$password https://bitbucket.org/u/p/get/tip.Zip -o tip.Zip
6
schmijos

使用 empty

パスワードが安全に保存されている(言い方ですが...)

$ echo password > pwd-file

emptyでプロセスを開始します。 (実際には-L logを省略します。)

$ empty -f -i fifo1 -o fifo2 -L log curl -u user http://example.com

pwd-fileの内容をemptyの入力パイプに送信します。プロセスはこれをstdin/dev/ttyの両方と見なします。

$ empty -s -c -o fifo1 < pwd-file

これは、疑似端末で起こったことです。

$ cat log
<<<Enter Host password for user 'user':>>>password
<<<
7
angus

Curlは ~/.netrc からパスワードを読み取ることができます。このような行を~/.netrcに追加します。

machine bitbucket.org login schmijos password swordfish

実行します

curl --netrc --digest --user schmijos https://bitbucket.org/u/p/get/tip.Zip -o tip