【问题标题】:bash script read user input and export it as variablebash 脚本读取用户输入并将其导出为变量
【发布时间】:2019-01-25 04:17:38
【问题描述】:

我正在尝试制作一个脚本来通过 openssl 生成 csr 文件。我想提示用户提供额外的 alt_names。 Openssl.cnf 是静态的 并且不能在里面做太多事情。如果用户需要 1 个 SAN 就可以了 所以我可以通过系统变量导出它。

[alt_names] 
DNS.1=${ENV::SAN}

如果我需要更多 SAN,那么配置下的语法如下:

[alt_names]
DNS.1=test.example.com
DNS.2=www.example.com
IP.1=1.1.1.1
IP.2-1.1.2.2

所以,我找不到任何其他示例如何自动化它期望 openssl 命令它自己并将其粘贴到 cli 中,如下所示:

openssl x509 -req -extfile <(printf "subjectAltName=DNS:www.exmple.com,DNS:test.example.com,IP:1.1.1.1") -days 365 

我正在考虑在 shell 中使用读取功能来提示用户提供他的 DNS:xxxxxx 或 IP:xxxx 完整信息,直到用户按下 [enter] 我找到了一些示例,但无法弄清楚如何将其导出到 openssl 命令中。

我找到的一个例子是:

    array=()
while IFS= read -r -p "Next item (end with an empty line): " line; do
    [[ $line ]] || break  # break if line is empty
    array+=("$line")
done

printf '%s
' "Items read:"
printf '  «%s»
' "${array[@]}"

【问题讨论】:

    标签: bash shell openssl csr


    【解决方案1】:

    其实我想我已经解决了这个问题...... 我在上面的例子中使用了读取函数和数组,这正是我想要在这里实现的。

    "openssl x509 -req -extfile <(printf "subjectAltName=${array[@]}") -days 365 "
    

    如果有人有更好的解决方案,请随时在此处提交。

    谢谢

    彼得

    【讨论】:

      猜你喜欢
      • 2021-11-11
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多