繁体   English   中英

使用sed修改tomcat server.xml配置

[英]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上应用补丁。

  1. 生成补丁文件:

     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" /> - ---> (...) 
  2. 然后,只需应用补丁:

      patch server.xml mydiff.patch 

    您可以使用标志-N运行patch命令。 因此,它将跳过似乎已修补的文件。

差异很可能是你选择的工具。 但是,如果经常更改原始配置文件,则diff可能无法在将来的版本中应用您的脚本。

sed还具有读取多行的能力。 您可能希望查看此示例该示例还涉及修改xml文档。

这可能有效:

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM