2009年5月20日

[Perl] 網管程式 - 自動檢查log檔並備份

Perl 程式如下,把程式加到 crontab 內,即可自動檢查 log 檔,大於一定程度後,執行備份壓縮並把log清空

#!/usr/bin/perl

$now = `date +%Y%m%d_%H%M`;
chomp($now);
$logname = "$now".".tgz";

#User Define
#50MB
$logsize = "51200k";
#monitor log path or file
$logpath = "/oracle/admin/IMSBKDB/bdump/alert_IMSBKDB.log";
$found = `/usr/bin/find $logpath -size +$logsize -print`;
chomp($found);
if ($found) {
print "$found => tar\n";
#alert_IMSBKDB.log bigger than 50MB, backup and cp /dev/null for it
`/usr/bin/find $logpath -size +$logsize -exec /bin/tar zcvf /oracle/admin/IMSBKDB/bdump/backup/$logname {} \\;`;
sleep 1;
`cp /dev/null $logpath`;
} else {
print "do nothing\n";
}

2009年5月11日

tar on the fly & compress

tar cvf - directory_name | gzip -9 -c | ssh taiwanwolf@file_server_IP "cat > /home/taiwanwolf/CDR_200905.tgz"

2009年5月6日

利用SNMP查詢監控遠端主機硬碟空間

在遠端主機的 /etc/snmp/snmpd.conf 加入
disk / 100000
disk /boot 100000
等等要監控的mount point,存檔離開

service snmpd restart

在網管主機下
snmpdf -v 2c -c public -Cu remote_IP

即可出現下列資訊,配合 grep, awk等表示法,就可做成監控程式了
Description size (kB) Used Available Used%
/ 472474368 284001024 188473344 60%
/boot 101086 23836 77250 23%

2009年4月24日

Linux裝機後hostname設定 - CentOS

裝機後主要要做的事情,目前想到的是設定防火牆還有hostname以及DNS

在設定hostname部分:

Linux 及 FreeBSD 修改主機名稱同樣使用 hostname 指令即可

例如:hostname taiwanwolf
這樣重新連線後,提示符號下就會變成
[root@taiwanwolf ~]

但這樣重開機後,還是會變回
[root@localhost ~]

為了系統下次啟動時也能自動使用新 hostname,需要作以下修改

vi /etc/sysconfig/network

把 hostname 部分改成新的名稱

P.S
Debian 為 /etc/hostname
FreeBSD 為 /etc/rc.conf

在設定DNS部分:
編輯 vim /etc/resolv.conf
內容如下
nameserver 139.175.252.16
nameserver 139.175.55.244
存檔即可

看你最常下的前10名指令~

FreeBSD或Linux等都適用
history | awk '{print $2}' | awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c | sort -rn | head -10

head -10 就是前10名,可自行修改數字

2009年4月7日

jQuery + AJAX + PHP 應用範例

ajax有很多技術,早先我是用xajax,但最近看了jQuery之後,覺得用法還蠻直接的,只要把jQuery的js檔案在HTML裡面include進來就可以直接使用語法,此外jQuery還支援很多PluginsUI (User Interface)的操作,以下是一個很簡單的範例。
實際流程是:整個網頁載入後,會出現一個輸入姓名的欄位

此時可隨便輸入一個名字

按下Send按鈕,驅動ajax,並有loading效果

等待5秒後,下方將出現剛剛輸入的名字


程式流程:透過jQuery的ajax功能與後端Server的PHP程式溝通(此範例使用GET方法)之後,再把結果(echo 指令的output)丟回給前端的瀏覽器,只要這個範例能夠看懂,就等於打通任督二脈(前後端資料能溝通),之後想在後端查詢資料庫還是做運算等動作,就都沒有問題了~

前端:hello.htm 內容如下

<HTML>
<HEAD>
<style type="text/css">
#loadingImg{
position:absolute;
width:300px;
top:0px;
left:50%;
margin-left:-120px;
text-align:center;
padding:7px 0 0 0;
font:bold 11px Arial, Helvetica, sans-serif;
}
</style>
<script type="text/javascript" src="jquery-1.2.6.js"></script>
<script type="text/javascript">
$(document).ready(function () {
  $('#btn').click(function (){
         $.ajax({
         url: 'hello.php',
         cache: false,
         dataType: 'html',
             type:'GET',
         data: { name: $('#name').val()},
         error: function(xhr) {
           alert('Ajax request 發生錯誤');
         },
         success: function(response) {
                   $('#msg').html(response);
           $('#msg').fadeIn();
         }
     });
  });
 $('#clean').click(function(){
    $('#msg').html("");
    // document.getElementById('msg').innerHTML = "";
 });
$("#loadingImg").ajaxStart(function(){
   $(this).show();
});
$("#loadingImg").ajaxStop(function(){
   $(this).hide();
});
})
</script>
</HEAD>
<BODY>
<div id="loadingImg" style="display:none"><img src="loading.gif"> loading...</div>
<br><br><br>
<div align="center">
Enter your name <br>
<input type="text" id="name"> <br>
<input type="button" value="send" id="btn">
<input type="button" value="reset" id="clean">
<br><br><br>
<div id="msg"> </div>
</div>
</BODY>
</HTML>


後端 hello.php 的程式碼如下
<?php
$myname = $_GET['name'];
sleep(5); //為了製造 ajax loading效果,所以延遲5秒
echo "You input name is $myname <br>";
?>


至於ajax loading 時的BAR或小花旋轉等圖示,網路上有一個ajaxload圖示庫可以來製作