天天看點

shell腳本-頁面靜态化

現實需求:

對于一些不是實時性的頁面,資料變化也不是很大的頁面,我們可以把該JSP或freemark頁面進行靜态化。

這樣的好處,當我們的服務挂掉了,通過nginx的代理,我們依然可以通路相關的頁面。

實作:

通過Shell腳本和linux的crontab的定時任務實作。這裡隻講如何實作該腳本。

1.首先我們要學會使用curl腳本:

下載下傳單個檔案,預設将輸出列印到标準輸出中(STDOUT)中

curl http://www.centos.org

通過-o/-O選項儲存下載下傳的檔案到指定的檔案中:

-o:将檔案儲存為指令行中指定的檔案名的檔案中

-O:使用URL中預設的檔案名儲存檔案到本地

 # 将檔案下載下傳到本地并命名為mygettext.html

 curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

 # 将檔案儲存到本地并命名為gettext.html

 curl -O http://www.gnu.org/software/gettext/manual/gettext.html

<code>例子</code><code>1</code><code>:index.sh</code>

<code>具體的腳本如下:</code>

<code>說明:</code>

<code>1.http</code><code>:</code><code>/</code><code>/</code><code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>8082</code><code>/</code><code>index?clean</code><code>=</code><code>true 是我們本機的一個容器服務提供的JSP頁面。</code>

<code>2.status1</code> <code>,status2,status3,status 是為了判斷服務傳回的JSP頁面是不是合法的,</code>

<code>  </code><code>根據你的JSP頁面具體實作。因為一旦JSP頁面錯誤了,傳回了錯誤的頁面覆寫了好的頁面,</code>

<code>  </code><code>靜态化就沒有任何意義了。</code>

<code>3.cp</code> <code>,mv 操作是為了備份和覆寫目前的靜态頁面。  </code>

<code>4.sed</code><code>的簡單用法,sed的操作不是必須的。http:</code><code>/</code><code>/</code><code>www.cnblogs.com</code><code>/</code><code>dong008259</code><code>/</code><code>archive</code><code>/</code><code>2011</code><code>/</code><code>12</code><code>/</code><code>07</code><code>/</code><code>2279897.html</code>

<code>#!/bin/sh</code>

<code>#resin index</code>

<code>#/opt/www/pages/index.tmp</code>

<code>#index page</code>

<code>http_code</code><code>=</code><code>`curl </code><code>-</code><code>o </code><code>/</code><code>opt</code><code>/</code><code>www</code><code>/</code><code>pages</code><code>/</code><code>index.tmp </code><code>-</code><code>s </code><code>-</code><code>w </code><code>%</code><code>{http_code} http:</code><code>/</code><code>/</code><code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>8082</code><code>/</code><code>index?clean</code><code>=</code><code>true`;</code>

<code>if</code> <code>[ ${http_code} </code><code>-</code><code>eq </code><code>200</code> <code>]</code>

<code>    </code><code>then</code>

<code>    </code><code>status1</code><code>=</code><code>`cat </code><code>/</code><code>opt</code><code>/</code><code>www</code><code>/</code><code>pages</code><code>/</code><code>index.tmp |grep </code><code>-</code><code>o </code><code>"content_item"</code><code>|wc </code><code>-</code><code>l`</code>

<code>    </code><code>status2</code><code>=</code><code>`cat </code><code>/</code><code>opt</code><code>/</code><code>www</code><code>/</code><code>pages</code><code>/</code><code>index.tmp |grep </code><code>-</code><code>o </code><code>"photocdn"</code><code>|wc </code><code>-</code><code>l`</code>

<code>    </code><code>status3</code><code>=</code><code>`cat </code><code>/</code><code>opt</code><code>/</code><code>www</code><code>/</code><code>pages</code><code>/</code><code>index.tmp |grep </code><code>-</code><code>o  </code><code>"focus"</code><code>|wc </code><code>-</code><code>l`</code>

<code>    </code><code>status</code><code>=</code><code>`cat </code><code>/</code><code>opt</code><code>/</code><code>www</code><code>/</code><code>pages</code><code>/</code><code>index.tmp |grep </code><code>-</code><code>o </code><code>"data-columnid"</code><code>|wc </code><code>-</code><code>l`</code>

<code>   </code><code># echo "${status1},${status2},${status3},${status}"</code>

<code>    </code><code>if</code> <code>[ ${http_code} </code><code>-</code><code>eq </code><code>200</code> <code>] &amp;&amp; [ ${status} </code><code>-</code><code>ge </code><code>15</code> <code>] &amp;&amp; [ ${status1} </code><code>-</code><code>ge </code><code>80</code> <code>] &amp;&amp; [ ${status2} </code><code>-</code><code>ge </code><code>80</code> <code>] &amp;&amp; [ ${status3} </code><code>-</code><code>ge </code><code>1</code> <code>]</code>

<code>        </code><code>then </code>

<code>        </code><code>date</code><code>=</code><code>`date </code><code>+</code><code>"%Y-%m-%d-%H-%M"</code><code>`;</code>

<code>        </code><code>cp </code><code>/</code><code>opt</code><code>/</code><code>www</code><code>/</code><code>pages</code><code>/</code><code>index.html </code><code>/</code><code>opt</code><code>/</code><code>www</code><code>/</code><code>pages</code><code>/</code><code>index.${date};</code>

<code>        </code><code>mv </code><code>/</code><code>opt</code><code>/</code><code>www</code><code>/</code><code>pages</code><code>/</code><code>index.tmp </code><code>/</code><code>opt</code><code>/</code><code>www</code><code>/</code><code>pages</code><code>/</code><code>index.html;</code>

<code>        </code><code>#debug_str='&lt;!--'`date +"%Y-%m-%d-%H-%M"`'--&gt;'</code>

<code>        </code><code>#sed -i '1a\'${debug_str} /opt/www/pages/index.html </code>

<code>    </code><code>else</code>

<code>        </code><code>echo </code><code>"build index ${status} ${status2} ${status3} fail"</code>

<code>    </code><code>fi; </code>

<code>else</code>

<code>    </code><code>echo </code><code>"build index fail!"</code><code>;</code>

<code>fi;</code>

<code>例子2:靜态化相關的子頁面,test2.sh</code>

<code>#pgc page </code>

<code>cids=(70040000 70080000 70060000 70070000 70090000 70120000 70100000 70110000 71010000 71020000 71030000 71060000 71050000 71040000 71070000 71080000 71090000 71100000 71220000 71110000 71120000 71230000 71130000 71140000 71150000 711600</code>

<code>00 71170000 71180000 71200000 71260000 71270000)</code>

<code>i=0</code>

<code>length=${</code><code>#cids[*]}</code>

<code>while</code> <code>[ </code><code>$i</code> <code>-lt</code> <code>$length</code> <code>] ; </code><code>do</code>

<code>    </code><code>cid=${cids[</code><code>$i</code><code>]}</code>

<code>    </code><code>http_code=`curl -o /opt/www/pages/pgc</code><code>$cid</code><code>.tmp -s -w %{http_code} http://127.0.0.1:8082/pgc/</code><code>$cid</code><code>?</code><code>clean=true`;</code>

<code>    </code><code>status=`cat /opt/www/pages/pgc</code><code>$cid</code><code>.tmp </code><code>|grep</code> <code>-o </code><code>"data-columnid"</code><code>|wc</code> <code>-l`</code>

<code>    </code><code>if</code> <code>[ ${http_code} </code><code>-eq</code> <code>200 ] &amp;&amp; [ ${status} </code><code>-ge</code> <code>1 ]</code>

<code>        </code><code>then</code>

<code>        </code><code>date=`date +</code><code>"%Y-%m-%d-%H-%M"</code><code>`;</code>

<code>        </code><code>if</code> <code>[ </code><code>-f</code> <code>/opt/www/pages/pgc</code><code>$cid</code><code>.html ]</code>

<code>            </code><code>then</code>

<code>            </code><code>cp /opt/www/pages/pgc</code><code>$cid</code><code>.html /opt/www/pages/pgc</code><code>$cid</code><code>.${date};</code>

<code>        </code><code>fi;</code>

<code>        </code><code>mv /opt/www/pages/pgc</code><code>$cid</code><code>.tmp /opt/www/pages/pgc</code><code>$cid</code><code>.html;</code>

<code>        </code><code>debug_str=</code><code>'&lt;!--'</code><code>`date +</code><code>"%Y-%m-%d-%H-%M"</code><code>`</code><code>'--&gt;'</code>

<code>        </code><code>sed -i </code><code>'1a\'</code><code>${debug_str} /opt/www/pages/pgc</code><code>$cid</code><code>.html </code>

<code>        </code><code>echo </code><code>"build hots$cid fail!"</code>

<code>    </code><code>fi;</code>

<code>    </code><code>let i++</code>

<code>done</code>

<code>例子3:test3.sh</code>

<code>#hots page </code>

<code>#精選: hots128.html    搞笑:hots132.html    </code>

<code>#福利:hots133.html    新聞:hots129.html    </code>

<code>#娛樂:hots130.html    體育:hots131.html    </code>

<code>#一分鐘:hots134.html   世界杯:hots177.html</code>

<code>#美劇鬧:hots164.html</code>

<code>#son hots249.html</code>

<code>cids=(128 132 129 130 131 223 224 225 134 164 249)</code>

<code>    </code><code>http_code=`curl -o /opt/www/pages/hots</code><code>$cid</code><code>.tmp -s -w %{http_code} http://127.0.0.1:8082/hots/</code><code>$cid</code><code>?</code><code>clean=true`;</code>

<code>    </code><code>if</code> <code>[ ${http_code} </code><code>-eq</code> <code>200 ]</code>

<code>        </code><code>if</code> <code>[ </code><code>-f</code> <code>/opt/www/pages/hots</code><code>$cid</code><code>.html ]</code>

<code>            </code><code>cp /opt/www/pages/hots</code><code>$cid</code><code>.html /opt/www/pages/hots</code><code>$cid</code><code>.${date};</code>

<code>        </code><code>mv /opt/www/pages/hots</code><code>$cid</code><code>.tmp /opt/www/pages/hots</code><code>$cid</code><code>.html;</code>

<code>        </code><code>sed -i </code><code>'1a\'</code><code>${debug_str} /opt/www/pages/hots</code><code>$cid</code><code>.html </code>

<code>例子4:比如我們網站通用的引用的頭部和尾部,要經常改,</code>

<code>       </code><code>我們不能每次去修改JSP再去上線吧。這些可以有網站的編輯維護,</code>

<code>       </code><code>我們定期下載下傳相關的檔案就好了。</code>

<code> </code><code>#!/bin/sh</code>

<code>wget http://tv.baidu.com/s2012/frag/83/20092861_344978361.inc -q -O /opt/www/h5-server/WEB-INF/includes/footer_tmp.jsp &gt;/dev/null 2&gt;&amp;1</code>

<code>cd /opt/www/h5-server/WEB-INF/includes/</code>

<code>iconv </code><code>-f</code> <code>gb2312 -t UTF-8 footer_tmp.jsp -o footer.jsp</code>

<code>rm -rf footer_tmp.jsp      </code>

<code>例子5:如果我們想定時重新整理某個接口,或者定時讓某個資料刷入緩存。</code>

<code>我們也可以做一個定時任務的腳本,定時執行腳本。</code>

<code>curl -o /tmp/cooperation.tmp http://localhost:8082/cooperation/listall.json</code><code>?</code><code>clean=true &gt; /dev/null 2&gt;&amp;1</code>

<code>exit 0</code>

<code>例子8:test8</code>

<code>wget http://tv.baidu.com/s2013/frag/78/120173_381017846.inc -q -O /opt/www/h5-server/WEB-INF/includes/navProms_tmp.jsp &gt;/dev/null 2&gt;&amp;1</code>

<code>iconv </code><code>-f</code> <code>GBK -t UTF-8 navProms_tmp.jsp -o navProms.jsp</code>

<code>sed -i </code><code>'1i&lt;%@ page language=\"java\" pageEncoding=\"UTF-8\" contentType=\"text/html;charset=utf-8\"%&gt;'</code> <code>/opt/www/h5-server/WEB-INF/includes/navProms.jsp</code>

<code>#yes|cp -af /opt/www/h5-server/WEB-INF/includes/navProms.jsp /opt/www/HotHtml5/WEB-INF/includes/navProms.jsp</code>

<code>rm -rf navProms_tmp.jsp</code>

     本文轉自韓立偉 51CTO部落格,原文連結:http://blog.51cto.com/hanchaohan/1834727,如需轉載請自行聯系原作者