[英]bash script read user input and export it as variable
我正在嘗試使腳本通過openssl生成csr文件。 我想提示用戶提供其他alt_names。 Openssl.cnf是靜態的,不能在內部做很多事情。 如果用戶需要1個SAN也可以,所以我可以通過系統變量將其導出。
[alt_names]
DNS.1=${ENV::SAN}
如果我需要更多的SAN,則config下的語法如下:
[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
我當時想在外殼中使用讀取功能來提示用戶提供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[@]}"
實際上,我認為我已經解決了這個問題……我在上面的示例中使用了讀取函數和數組,這正是我想要在此處實現的目標。
"openssl x509 -req -extfile <(printf "subjectAltName=${array[@]}") -days 365 "
如果有人有更好的解決方案,請隨時在此處提交。
謝謝
皮特
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.