Immer wenn ich ein Rezept schreibe, scheint Chef nie sed richtig zu verwenden. Ich kann generell mit etwas kreativem Grep'ing umgehen, aber nicht in diesem Fall. Ich versuche nur, den Distinguished Name aus einigen Cert-Dateien zu extrahieren. Wenn Sie den umgekehrten Schrägstrich vor den einfachen Anführungszeichen entfernen, wird dieser Befehl in der Befehlszeile problemlos ausgeführt. Chef wirft auch keine Fehler. Der "nicht funktionierende" Teil kommt herein, weil die Ausgabe, die in der "DN" -Variable gespeichert ist, nur der Inhalt des openssl-Befehls ist, als ob der sed nie überhaupt ausgeführt worden wäre. Ich habe das auch als direkten Ruby-Code ausgeführt und es hat gut funktioniert. Es scheint nur Chef zu sein, der das Problem löst.Chef nicht sed korrekt verarbeiten
filesAndExpArray = splitArray.map! do |file|
DN = shell_out("openssl x509 -noout -subject -in #{file} | sed \'s/^.*CN=//\'")
DN = DN.stdout
file + ";" + DN
end
Welche Version des Kochs? Einige Logs könnten hilfreich sein, um herauszufinden, was dort nicht stimmt ... – Tensibai
Versuchen Sie, 'type sed' in Ihrer Shell/Terminal auszuführen und den vollständigen Pfad zu verwenden, den Sie sehen, anstatt blank' sed' in Ihrem Rezept. Versuchen Sie auch einen einfacheren 'sed'-Befehl, wie zum Beispiel' sed 's /./#/ g''. –
Koch: 12.15.19 und welches Protokoll? –