簡體   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