証明書リクエストを生成し、batファイルを使用してCAに送信しようとしています。バットファイル内のすべての行をループします
私はちょうど1ホスト名のためにそれを行うことができますので、これらを自動的に生成するためにバットファイルを実行しています。ここで私が試したことがあります。 hostnames.txtファイルの1行ずつループし、すべての変数を置き換えます。コマンドの構文が正しくありません。私は、単純なエコーが動作しますが、とエラーが思い付いたかどうかをテストしたいHow do you loop through each line in a text file using a windows batch file?
set CA_SERVER=xxxx
set CA_NAME=xxxx
set LOGFILE=.\RequestCert.log
set LIST=hostnames.txt
if not exist %LIST% (
echo %DATE% : %TIME% : ERROR : The list of hostnames file %LIST% is
missing. Cannot request certificate. Exiting! >> %LOGFILE%)
for /f "tokens=*" %%a in ("%LIST%") do (
set HOSTNAME=%%a
echo HOSTNAME
)
から参照
。私はstackoverflowから多くの参照を見たが、それは何が間違っているか把握することはできません。
以下は、上記を修正した後に実装するものです。
openssl req -nodes -newkey rsa:2048 -nodes -keyout %HOSTNAME%.key -out
%HOSTNAME%.csr -subj "/C=SG/ST=/L=xxx/O=xxx/OU=xxx
/CN=%HOSTNAME%"
certreq -submit -f -config "%CA_SERVER%\%CA_NAME%" -attrib
CertificateTemplate:SSLCert" %HOSTNAME%.csr
echo Generating certificate request and key for %HOSTNAME%
これは何度も尋ねられていますが、鉱山は機能していないことは知っています。ご協力いただきありがとうございます!
更新日: Gerhard Barnardの助けを借りて現在の設定が有効です。
このエラーは私のために生成されませんでしたが、期待通りに 'echo'ed' HOSTNAME'だけでした。 'list'はファイル名であるので、' for/f'でそれを引用するだけで、ファイル名が '%% a'に割り当てられます。ファイルの* contents *を望むなら、引用符の意味を変更するために 'usebackq'オプションを使う必要があります。値を 'hostname'に代入すれば、' hostname'の* contents *は定数文字列 'HOSTNAME'ではなく' echo'する必要があります。 'echo'コマンドは括弧でくくられたシーケンスの中にあります。 ( ''コードブロック '")では、他の措置を講じる必要があります - 遅延拡張に関するSO項目を参照してください。 – Magoo