【发布时间】:2018-02-02 08:01:01
【问题描述】:
这可能会很困难。
我需要一种通过 bash 脚本向 Apache2 配置文件添加别名的方法。
我已经用 grep 检查别名是否已在另一个配置文件中使用。我现在面临的问题是如何将“ServerAlias testing.com”添加到配置文件中。
每个配置文件都有两个虚拟主机,分别为端口 80 和端口 443。
我需要将字符串“ServerAlias testing.com”添加到“ServerName”之后下一行的每个配置中,但忽略以 # 或 ; 开头的任何行。
例子:
<VirtualHost *:80>
# A comment with ServerName in it <-- must be ignored
ServerName test.com
<<ADD STRING HERE>>
</VirtualHost>
<VirtualHost *:443>
ServerName test.com
<<AND HERE>>
</VirtualHost>
任何帮助将不胜感激。
编辑: 必须忽略注释,因为 apache 上的默认配置有我希望保留的 cmets,并且在这些 cmets 中是必须忽略的“ServerName”,每个虚拟主机只会有一个“ServerName”。
虚拟主机标签对我来说无关紧要,只要我可以忽略 cmets 并在每个虚拟主机配置中的 ServerName 之后添加一次 ServerAlias testing.com 就行了。
这需要对配置进行编辑,然后保存到文件
【问题讨论】:
-
您真正想添加什么,
ServerAlias testing.com或ServerName 'test.com'?您正在谈论两者(也请注意引号)。 -
所有排序现在:-) 需要添加
ServerAlias testing.com -
所以我的下一个问题是,如果有任何评论,或者您不想打印该评论,您想跳过整个区块吗?您能否更具体地回答您的问题?
-
如果
ServerName可以出现在您文件中的其他任何地方,而您不希望它被更改,那么将这些情况包含在您的示例输入/输出中。在文件中查找目标字符串是微不足道的,在各种上下文中包含/排除相同的目标字符串是事情变得更有趣的地方。现在,您有不同的人对VirtualHost文本是否相关做出不同的假设,如果是,那么通过说明它们是否是您查找 ServerName 的要求的一部分并包括相关的内容,以什么方式消除所有混淆示例输入/输出中的示例 -
还有一个事实是您的新字符串包含与现有字符串(包括“test.com”)相关的任何方式的“testing.com”?