2016-05-01 26 views
1

bashスクリプト、

curl -H "Accept: application/json" -H "Content-Type: application/json" -H "X-content: test_content" -H "X-Public: public_key" -H "X-Hash: $(printf "testcompany1" | openssl sha256 -hmac "secret_key" | sed "s/^.* //" | tr -d "\n")" -X GET http://192.168.100.20/rest/v01/customer/csv > /home/user/customer.csv 

私が何をしたいのかが窓CMDでこれを使用することですシェル。 Cygwinとカールがインストールされています。だから私は$(コマンド)を使用して、私のスクリプトでは、ネストされたコマンドとして行われ、この私に不可解な、HMACハッシュにそれを追跡しています

$(printf "testcompany1" | openssl sha256 -hmac "secret_key" | sed "s/^.* //" | tr -d "\n") 

は、どのように私は、Windowsのシェルcmdはこのことを認識し得るのですか?または、hmac authで休憩データを取得するための、別のよりスマートなアプローチがあるでしょうか?

+0

実行中:printf "testcompany1" | openssl sha256 -hmac "secret_key" | sed "s /^.* //" | tr -d "\ n"を指定し、ハッシュをX-hashに挿入すると期待される結果が返されます。 FYI – larsbrandi

+0

私はたくさんのお金を支払っても、Windowsのコマンドシェルにbashを翻訳することはできません。コマンドの標準出力を環境変数に埋め込むことができるSETコマンドのバリエーションがありますが、新しい問題に遅かれ早かれ実行します。とにかくCygwinがインストールされているので、bash/zsh/ruby​​/perl/whateveryoulikeにスクリプト全体を書いて、その上に小さなBATCHラッパーを書くのはいかがですか? – user1934428

+0

私は同じ結論に達しました。私はバッチファイルを作った。これは私が最初に意図したようにlibreofficeから呼び出すことができます。 – larsbrandi

答えて

0

私はonelinerまで、このようなバッチファイルでIチャンクのbashを分割:

echo off 
set content=content 
set secret=secret_key 
printf %content% | openssl sha256 -hmac %secret% | sed "s/^.* //" | tr -d "\n" > hash.txt 
set /p hash=< hash.txt 
curl -H "Accept: application/json" -H "Content-Type: application/json" -H "X-content: %content%" -H "X-Public: public_key -H "X-Hash: %hash%" -X GET http://192.168.100.20/rest/v01/customer/csv > out.csv 

のprintfコマンドが正しいハッシュ値を生成について非常にうるさいだったので、私は最初のファイルに送信し、バック再び。