[英]Modify tomcat server.xml config using sed
我正在制作一个依赖于Tomcat7通过HTTPS的Ubuntu软件包。 为了方便我们的客户,我希望软件包的安装脚本在Tomcat7中启用HTTPS。 这很容易手动完成; 在文件/etc/tomcat7/server.xml中,需要取消注释以下块:
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
我怎么能从一个shellcript做到这一点? 优选地,它仍然适用于精确图案的轻微修改。 我认为规则将是search for '<Connector port="8443"'
,然后在块之前和之后删除<!--
和-->
。
考虑在server.xml
上应用补丁。
生成补丁文件:
diff -ruN server.xml.old server.xml.new > mydiff.patch
server.xml.old
是原始文件, server.xml.new
是您想要的文件。
补丁( mydiff.patch
)将如下所示:
--- server.xml.old 2011-10-29 04:03:25.000000000 -0300 +++ server.xml.new 2011-10-29 04:04:03.000000000 -0300 @@ -1,10 +1,10 @@ (...) - <!-- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> - ---> (...)
然后,只需应用补丁:
patch server.xml mydiff.patch
您可以使用标志-N
运行patch
命令。 因此,它将跳过似乎已修补的文件。
这可能有效:
sed -nr '/^<!--/,/^-->/!{p;b};/^<!--/{h;d};H;/^-->/{x;/<Connector port="8443"/{s/(^<!--\s*\n|\n\s*-->)//g};p}'
这忽略了所有非注释行。 将注释行保存在保留空间中,如果注释包含<Connector port="8443"
,则删除开始/结束注释分隔符,然后打印注释/非注释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.