gpt4 book ai didi

regex - 用于更新 ssl.conf 中 SSL 证书文件路径的 Bash 脚本(RegEx 单词与 # 匹配)

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:22 25 4
gpt4 key购买 nike

我正在创建一个可重复使用的脚本,用于在服务器设置上自动设置新的 SSL。我有几个不同的行需要更新文件路径。

ssl.conf 文件中的默认值如下所示(具有前导 # 标记):

#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt

我需要在 bash 脚本中动态设置它,以这样结束:

 SSLCACertificateFile /etc/pki/tls/certs/example-ca-bundle.crt

到目前为止,我是从这个开始的,但我不确定我在做什么。

~/update_ssl_conf.sh

代码:

#!/bin/bash
SSL_CONFIG_PATH="/etc/httpd/conf.d/ssl.conf"

SSL_DEFAULT_CA_CERT_PATH="#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt"
SSL_CA_CERT_PATH="SSLCACertificateFile /etc/pki/tls/certs/example-ca-bundle.crt"

我尝试从下面链接的公认解决方案开始,并在\b 之后添加 #。

Bash script to update path to ssl certificate file in ssl.conf

sed -i "s|.*\b#$SSL_DEFAULT_CA_CERT_PATH\b.*|$SSL_CA_CERT_PATH|" SSL_CONFIG_PATH

sed -i "s|(?s).*(?<!\\w)$SSL_DEFAULT_CA_CERT_PATH(?!\\w).*|$SSL_CA_‌​CERT_PATH|" $SSL_CONFIG_PATH

我感觉两者都不起作用,因为正则表达式不是 100% 正确。

最佳答案

您可以使用带有 () 的组来匹配表达式组:

SSL_CONFIG_PATH=/etc/httpd/conf.d/ssl.conf

SSL_CA_CERT_PATH=/etc/pki/tls/certs/example-ca-bundle.crt

sed -ri "s|(.*#)(SSLCACertificateFile)\s+(.*)|\2 $SSL_CA_CERT_PATH|" $SSL_CONFIG_PATH
  • (.*#) 匹配评论
  • (SSLCACertificateFile)匹配字段名
  • (.*)匹配值

只有字段名称(第 2 组 \2)需要跟在您的新路径之后

关于regex - 用于更新 ssl.conf 中 SSL 证书文件路径的 Bash 脚本(RegEx 单词与 # 匹配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41861469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com