天天看点

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,如需转载请自行联系原作者