Bash脚本更新ssl.conf中ssl证书文件的path

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

在ssl.conf文件中的默认值是这样的(一个有领先的#标签):

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

我需要它在bash脚本中dynamic设置,最终如下所示:

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

到目前为止,我开始了这个,但我不知道我在做什么。

WAMP响应缓慢

mod_rewrite:从URL中删除查询string?

如何防止用户访问包含文件?

任何替代CachingHttpClient的Android?

通过Apache服务页面访问socket.io服务器

~/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_PATHb.*/$SSL_CERT_PATH/" $SSL_CONFIG_PATH

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

ssl.conf文件中的默认值如下所示(引导#标签):

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

我需要它在bash脚本中dynamic设置,最终如下所示:

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"

我尝试从接受的解决scheme

sed -i "s|.*b#$SSL_DEFAULT_CA_CERT_PATHb.*|$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

因为正则expression式不正确,所以都没有工作。

Apache Benchmark – 并发和请求的数量

Apache(xamp)和IIS不能一起工作

mod_rewrite to index.html为深层URL分配相对path

如何在windows上configurationapache和mode_wsgi进行本地django开发

初始化模块在Apache2

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

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

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

GNU sed , man页说

在任何给定的s命令中,/字符可以被任何其他单个字符统一替换。 /字符(或任何其他字符替代使用)可以出现在正则表达式或更换只有前面有一个字符。

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...