gpt4 book ai didi

用于更新 ssl.conf 中 ssl 证书文件路径的 Bash 脚本

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

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

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

SSLCertificateFile /etc/pki/tls/certs/localhost.crt

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

SSLCertificateFile /etc/pki/tls/certs/example.crt

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

~/update_ssl_conf.sh

代码:

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

SSL_DEFAULT_CERT_PATH="SSLCertificateFile /etc/pki/tls/certs/localhost.crt"
SSL_CERT_PATH="SSLCertificateFile /etc/pki/tls/certs/example.crt"
sed "s/.*\b$SSL_DEFAULT_CERT_PATH\b.*/$SSL_CERT_PATH/" $SSL_CONFIG_PATH

***UPDATED AREA,还需要sed命令来更新以#开头的行。

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"

我从公认的解决方案中尝试了

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

两者都不起作用,因为正则表达式不正确。

最佳答案

问题出在斜杠上。您的变量包含它们,最终命令将有多个正斜杠,这会影响您的原始 sed 的语法s/<search>/<replace/句法。只需更改您的 sed来自 / 的单词分隔符至 | (或任何其他字符,例如 @~ )来修复它。

sed -i "s|.*\b$SSL_DEFAULT_CERT_PATH\b.*|$SSL_CERT_PATH|" file

应该可以解决您的问题并使用 -i标记以进行就地替换并执行 -i.bak<filename>.bak 格式保存文件的备份

GNU sed , man页面说

The / characters may be uniformly replaced by any other single character within any given s command. The / character (or whatever other character is used in its stead) can appear in the regexp or replacement only if it is preceded by a \ character.

关于用于更新 ssl.conf 中 ssl 证书文件路径的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41837615/

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