Ich versuche, Zertifikatsanforderung zu generieren und an CA über Bat-Datei zu senden.Schleife durch jede Zeile in Fledermaus-Datei
Ich kann es für nur 1 Hostname tun, also mache ich eine Fledermaus-Datei, um all diese automatisch zu generieren. Hier ist, was ich versucht habe. Es soll Zeile für Zeile in der Datei hostnames.txt durchlaufen und alle Variablen ersetzen.
Referenzierung von 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
)
ich testen wollen, ob ein einfaches Echo funktioniert aber der Fehler kam als: Die Syntax des Befehls ist falsch. Ich habe viele Referenzen von stackoverflow gesehen, aber es kann nicht herausfinden, was falsch ist.
Unten ist was ich implementieren werde, nachdem das obige fest ist.
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%
Ich weiß, das wurde oft gefragt, aber meins scheint nicht zu funktionieren .. Vielen Dank im Voraus für Ihre Hilfe!
UPDATE: Aktuelle Konfiguration, die nach Hilfe von Gerhard Barnard funktioniert.
Ich habe diesen Fehler nicht für mich generiert, nur 'echo'ed' HOSTNAME' wie erwartet. Da 'list' ein Dateiname ist, wird der Dateiname einfach' '%% a' 'zugewiesen, wenn Sie ihn in' for/f' angeben. Wenn Sie den * Inhalt * der Datei wünschen, brauchen Sie nicht die 'usebackq'-Option, um die Bedeutung der Anführungszeichen zu ändern. Wenn Sie den Wert für 'hostname' festgelegt haben, müssten Sie den * Inhalt * von' hostname' - nicht den Konstantenstring 'HOSTNAME' -" echo "- und auch dort, da der Befehl' echo' innerhalb einer eingeklammerten Sequenz von Zeilen) (ein "' code block "") müssen Sie andere Maßnahmen ergreifen - siehe SO-Punkte auf 'verzögerte Expansion '. – Magoo