Unix檔案系統頁面監控實現

fjzcau發表於2015-06-22
透過shell實現對大量主機的檔案系統使用率監控,指令碼由三部分組成,
1)監控伺服器發起排程,將獲取檔案系統使用情況的指令碼傳送到被監控主機。
2)被監控主機收集檔案系統使用情況後向監控伺服器傳送資訊。
3)監控伺服器根據收到的主機檔案系統使用情況,生成統一頁面
#-----------------------------------------------------------#

#  (1)收集資料的指令碼 aix_fs_size_do.sh
#-----------------------------------------------------------#
  1. #---------------------------------------------------------------------------#
  2. # Scripts : /home/bsbman/aix/aixfssize/aix_fs_size_do.sh
  3. # Author : fangjz/BaoShangBank
  4. # Date : 2015/05/06
  5. # Purpose : Clean Application Log etc.
  6. # Notes : This script can be run in crontab or in other shell script.
  7. # Parameters :
  8. #---------------------------------------------------------------------------#

  9. i_host=
  10. i_ip=
  11. i_user=
  12. i_upw=
  13. i_rpw=

  14. cd /home/bsbman/aix/aixfssize
  15. . ./scr/bsb_fun.sh

  16. i_base_dir=`pwd`
  17. i_log_dir=log

  18. i_loop_cnt=0

  19. while [ 1=1 ]
  20. do
  21. {
  22. rm -rf $i_log_dir
  23. mkdir -p $i_log_dir
  24. chmod 777 -R $i_log_dir

  25. nowtime=`date +'%Y%m%d_%H%M'`
  26. cd $i_base_dir
  27. i_cnt=1
  28. i_dolog=do.log

  29. nowtime=`date +'%Y-%m-%d %T'`
  30. echo "-->$nowtime begin" > $i_dolog

  31. while read i_system
  32. do
  33. {
  34.   echo "-->$i_cnt,$i_system" >> $i_dolog
  35.   i_cnt=`expr $i_cnt + 1`

  36.   i_host=`echo $i_system | awk '{print $1}'`
  37.   i_ip=`echo $i_system | awk '{print $2}'`
  38.   i_user=`echo $i_system | awk '{print $3}'`
  39.   i_upw=`echo $i_system | awk '{print $4}'`
  40.   i_rpw=`echo $i_system | awk '{print $5}'`
  41.   log=${i_log_dir}/${i_host}_${i_ip}_do.log
  42.   nowtime=`date +'%Y-%m-%d %T'`
  43.   echo "=======================================================================" >> $log
  44.   echo "== $nowtime " >> $log
  45.   echo "=======================================================================" >> $log
  46.   echo "-->host=${i_host}--" >> $log
  47.   echo "-->ip=$i_ip--" >> $log
  48.   echo "-->user=$i_user--" >> $log
  49.   echo "-->upw=$i_upw--" >> $log
  50.   echo "-->rpw=$i_rpw--" >> $log

  51.   nohup ./aix_fs_size_run.sh ${i_host} $i_ip $i_user $i_upw $i_rpw $i_WorkDir >> $log 2>&1 &

  52. }
  53. done < scr/bsbcmdb_pw_aix.txt

  54. i_cnt=0
  55. while [ 1 = 1 ]
  56. do
  57. {
  58.   i_run_cnt=`ps -ef | grep aix_fs_size_run.sh | grep -v grep |wc -l`

  59.   if [ ${i_run_cnt} -eq 0 ]
  60.   then
  61.     now_time=`date +"%Y%m%d %H:%M:%S"`
  62.     echo "-->$now_time aix_fs_size_run.sh ok!"
  63.     break
  64.   fi
  65.   i_cnt=`expr $i_cnt + 1`
  66.   echo " ${i_cnt}:${i_run_cnt} aix_fs_size_run process running,sleep 5 seconds..."
  67.   sleep 5
  68. }
  69. done

  70. sed 's///g' $log > $log.bak
  71. mv $log.bak $log

  72. chmod 777 -R $i_log_dir

  73. nowtime=`date +'%Y-%m-%d %T'`
  74. echo "-->$nowtime end" >> $i_dolog

  75. sleep 1

  76. #find . -name "do*.log" -mmin +30 |xargs -i rm -f {}

  77. i_loop_cnt=`expr $i_loop_cnt + 1`

  78. if [ $i_loop_cnt -ge 1 ]
  79. then
  80.    echo "----------------------------------------"
  81.    echo "--> loop_cnt=$i_loop_cnt Loop End exit !!"
  82.    echo "----------------------------------------"
  83.    exit 0
  84. fi

  85. }
  86. done #end of while [ 1=1 ]
#-----------------------------------------------------------#
#  (2)收集資料的指令碼 aix_fs_size_run.sh
#-----------------------------------------------------------#
  1. #!/usr/bin/expect -f
  2. #---------------------------------------------------------------------------#
  3. # Scripts : /home/bsbman/aix/aixfssize/aix_fs_size_run.sh
  4. # Author : fangjz/BaoShangBank
  5. # Date : 2015/05/06
  6. # Purpose : Clean Application Log etc.
  7. # Notes : This script can be run in crontab or in other shell script.
  8. # Parameters :
  9. #---------------------------------------------------------------------------#

  10. set timeout 5
  11. set i_host [lindex $argv 0]
  12. set i_ip [lindex $argv 1]
  13. set i_user [lindex $argv 2]
  14. set i_upw [lindex $argv 3]
  15. set i_rpw [lindex $argv 4]
  16. set i_workdir [lindex $argv 5]

  17. spawn ssh -o ConnectTimeout=1 $i_user@$i_ip "mkdir -p $i_workdir;chmod -R 777 $i_workdir"
  18. expect "*(yes/no)?*" {
  19. send "yes\r"
  20. expect "?assword:*"
  21. send "$i_upw\r"
  22. } "?assword:*" {send "$i_upw\r"}
  23. expect eof

  24. spawn scp scr/bsb_fun.sh $i_user@$i_ip:$i_workdir
  25. expect "*(yes/no)?*" {
  26. send "yes\r"
  27. expect "?assword:*"
  28. send "$i_upw\r"
  29. } "?assword:*" {send "$i_upw\r"}
  30. expect eof

  31. spawn scp scr/aix_fs_size.sh $i_user@$i_ip:$i_workdir
  32. expect "*(yes/no)?*" {
  33. send "yes\r"
  34. expect "?assword:*"
  35. send "$i_upw\r"
  36. } "?assword:*" {send "$i_upw\r"}
  37. expect eof

  38. spawn ssh -o ConnectTimeout=1 $i_user@$i_ip "$i_workdir/aix_fs_size.sh $i_host $i_ip $i_user $i_upw $i_rpw $i_workdir"
  39. expect "*(yes/no)?*" {
  40. send "yes\r"
  41. expect "?assword:*"
  42. send "$i_upw\r"
  43. } "?assword:*" {send "$i_upw\r"}
  44. expect eof
#-----------------------------------------------------------#
#  (3)收集資料的指令碼 aix_fs_size.sh
#-----------------------------------------------------------#
  1. #---------------------------------------------------------------------------#
  2. # Scripts : /home/bsbman/aix/aixfssize/scr/aix_fs_size.sh
  3. # Author : fangjz/BaoShangBank
  4. # Date : 2015/05/06
  5. # Purpose : Clean Application Log etc.
  6. # Notes : This script can be run in crontab or in other shell script.
  7. # Parameters :
  8. #---------------------------------------------------------------------------#
  9. #--paramemer input--#
  10. ii_host=$1
  11. ii_ip=$2
  12. ii_user=$3
  13. ii_upw=$4
  14. ii_rpw=$5
  15. ii_workdir=$6

  16. cd $ii_workdir

  17. chmod +x *.sh

  18. . ./bsb_fun.sh

  19. i_curdir=`pwd`
  20. i_host=$ii_host
  21. i_log=${i_host}_${ii_ip}_${i_Type}.log

  22. #df -m | sed -n '2,$p' | grep -v '/proc' | awk 'BEGIN{OFS=":"}{print $7,$2,$2-$3,$4 }' > $i_log

  23. df -m -P | sed -n '2,$p' | grep -v '/proc' | awk 'BEGIN{OFS=":"}{print $6,$2,$3,$5 }' > $i_log

  24. ftp -n 40.1.18.73 <<!
  25. user bsbman Bsbman12#
  26. bin
  27. lcd ${i_WorkDir}
  28. cd ${i_LogDir}
  29. put ${i_log}
  30. by
  31. !

  32. cd /tmp

  33. if [ -d $i_WorkDir ]
  34. then
  35.   rm -rf $i_WorkDir
  36. fi

  37. exit 0
#-----------------------------------------------------------#
#  (4)收集資料的指令碼 bsb_fun.sh
#-----------------------------------------------------------#
  1. #---------------------------------------------------------------------------#
  2. # Scripts : /home/bsbman/aix/aixfssize/scr/bsb_fun.sh
  3. # Author : fangjz/BaoShangBank
  4. # Date : 2015/05/06
  5. # Purpose : Clean Application Log etc.
  6. # Notes : This script must be in other shell script.
  7. # Parameters :
  8. #---------------------------------------------------------------------------#

  9. i_Type='fssize'
  10. i_LogDir=/home/bsbman/aix/aix${i_Type}/log
  11. i_WorkDir=/tmp/dongdong123/${i_Type}

  12. #----------------------------------------------------------#
  13. # rm_dir /cvbackup/testdb 2
  14. #----------------------------------------------------------#
  15. function rm_dir {
  16.   i_dir=$1
  17.   i_keep=$2

  18.   if [ ! -d $i_dir ]
  19.   then
  20.     echo "-->!!ERROR dir $i_cvbackup not exists" >> $i_log
  21.     exit 0
  22.   fi

  23.   cd $i_dir
  24.   echo "-->rm old file of $i_dir (KEEP_BACKUP_NUMS=$i_keep):" >> $i_log
  25.   i_cnt=0
  26.   for i in `ls -t`
  27.   do
  28.   {
  29.     if [ $i_cnt -ge $i_keep ]
  30.     then
  31.       echo "-->rm:$i" >> $i_log
  32.       rm -f $i
  33.       #rm -rf $i
  34.     fi
  35.     i_cnt=`expr $i_cnt + 1`
  36.   }
  37.   done
  38. } # end rm_dir define

  39. # clean old backup file

  40. #--get deepest dir--#
  41. function get_deepest_dir {
  42. i_dir=$1
  43. find $i_dir -type d | tail -n 1
  44. }

  45. function ora_get_archive_dest {
  46. i_dest=`sqlplus -s / as sysdba<<!
  47. set heading off
  48. set feedback off
  49. set timing off
  50. select destination from v\\$archive_dest where dest_name='LOG_ARCHIVE_DEST_1';
  51. !
  52. `
  53.   i_dest=`echo $i_dest`
  54.   echo $i_dest
  55. }
#-----------------------------------------------------------#
#  (5)配置檔案 bsbcmdb_pw_aix.txt
#-----------------------------------------------------------#
P01_ARAP01_1   xx.xx.xx.xx bsbuser Bsbpasswd 111 
P01_ARAP02_2   xx.xx.xx.xx bsbuser Bsbpasswd 111 
P01_BSPAPP01_3 xx.xx.xx.xx bsbuser Bsbpasswd 111 
P01_BSPAPP02_4 xx.xx.xx.xx bsbuser Bsbpasswd 111 
P01_BSPAPP03_5 xx.xx.xx.xx bsbuser Bsbpasswd 111 
P01_BSPAPP04_6 xx.xx.xx.xx bsbuser Bsbpasswd 111 
P01_BSPAPP05_7 xx.xx.xx.xx bsbuser Bsbpasswd 111 
#-----------------------------------------------------------#
#  (6)頁面生成指令碼 bsb_make_aixfs_html.sh 
#-----------------------------------------------------------#
  1. #---------------------------------------------------------------------------#
  2. # Scripts : /var/www/bsbman/scripts/bsb_make_aixfs_html.sh
  3. # Author : fangjz/BaoShangBank
  4. # Date : 2015/05/06
  5. # Purpose : Clean Application Log etc.
  6. # Notes : This script can be run in crontab or in other shell script.
  7. # Parameters :
  8. #---------------------------------------------------------------------------#

  9. i_debug_flag=0
  10. i_print_debug_flag=1

  11. i_aixfs_dir='/home/bsbman/aix/aixfssize/log'
  12. i_aixfs_log='*fssize.log'
  13. i_do_log='*do.log'

  14. a_nofs[0]=
  15. a_red_fs[0]=
  16. a_yell_fs[0]=
  17. a_other_fs[0]=
  18. a_full_fs[0]=

  19. i_nofs_cnt=0
  20. i_red_fs_cnt=0
  21. i_yell_fs_cnt=0
  22. i_other_fs_cnt=0
  23. i_full_fs_cnt=0

  24. olddir=`pwd`

  25. nowtime=`date +'%Y-%m-%d %T'`
  26. echo "-->$nowtime,make aix fs html begin..."

  27. #--get lastest fs size --#
  28. su - bsbman -c "/home/bsbman/aix/aixfssize/aix_fs_size_do.sh" > /dev/null 2>&1

  29. nowtime=`date +'%Y%m%d%H%M'`
  30. i_fs_html=/var/www/bsbman/aixfs/aix_fs_index_${nowtime}.html
  31. i_index_html=/var/www/bsbman/aixfs/index.html

  32. #--count fs number --#
  33. i_fs_cnt=0

  34. nowtime=`date +'%Y-%m-%d %T'`
  35. Date=`date +'%Y/%m/%d'`
  36. Time=`date +%T`

  37. #--count aix fs number--#
  38. i_fs_cnt=0
  39. cd $i_aixfs_dir #enter into fs dir
  40. for i_inlog in `ls $i_do_log`
  41. do
  42. {
  43.     i_proname=`echo $i_inlog|cut -d'_' -f1`
  44.     i_sysname=`echo $i_inlog|cut -d'_' -f2`
  45.     i_sysno=`echo $i_inlog|cut -d'_' -f3`
  46.     i_sysip=`echo $i_inlog|cut -d'_' -f4`

  47.     i_fs_exist="${i_proname}_${i_sysname}_${i_sysno}_${i_sysip}_fssize.log"

  48.     i_red_fs_flag=0
  49.     i_yell_fs_flag=0
  50.     i_other_fs_flag=0

  51.     if [ -f $i_fs_exist ]
  52.     then
  53.         while read i_line
  54.         do
  55.         {
  56.                 i_fsname=`echo $i_line|awk -F":" '{print $1}'`
  57.                 i_total=`echo $i_line|awk -F":" '{print $2}'`
  58.                 i_use=`echo $i_line|awk -F":" '{print $3}'`
  59.                 i_utl=`echo $i_line|awk -F":" '{print $4}'`

  60.                 i_fsname=`echo $i_fsname`
  61.                 i_total=`echo $i_total`
  62.                 i_use=`echo $i_use`
  63.                 i_utl=`echo $i_utl`
  64.                 i_warning=`echo $i_utl | awk -F"%" '{print $1}' | awk -F"." '{print $1}' `
  65.                 i_warning_color='white'

  66.                 #echo "--1>$i_fsname,$i_total,$i_use,$i_utl,warning=$i_warning,warging_color=$i_warning_color--"
  67.                 if [ $i_warning -ge 80 ]
  68.                 then
  69.                   i_red_fs_flag=1
  70.                 elif [ $i_warning -ge 60 ]
  71.                 then
  72.                   i_yell_fs_flag=1
  73.                 else
  74.                   i_other_fs_flag=1
  75.                   #continue
  76.                 fi
  77.                 #echo "--2>$i_fsname,$i_total,$i_use,$i_utl,warning=$i_warning,warging_color=$i_warning_color--"
  78.         }
  79.         done < $i_fs_exist

  80.        
  81.         if [ $i_red_fs_flag -eq 1 ] # 使用率大於80%的系統,紅色字型
  82.         then
  83.             a_red_fs[$i_red_fs_cnt]=$i_fs_exist
  84.             i_red_fs_cnt=`expr $i_red_fs_cnt + 1`
  85.         elif [ $i_yell_fs_flag -eq 1 ] # 使用率大於60% 的系統,黃色字型
  86.         then
  87.             a_yell_fs[$i_yell_fs_cnt]=$i_fs_exist
  88.             i_yell_fs_cnt=`expr $i_yell_fs_cnt + 1`
  89.         else
  90.             a_other_fs[$i_other_fs_cnt]=$i_fs_exist
  91.             i_other_fs_cnt=`expr $i_other_fs_cnt + 1`
  92.         fi

  93.     else
  94.       a_nofs[$i_nofs_cnt]="$i_inlog"
  95.       i_nofs_cnt=`expr $i_nofs_cnt + 1`
  96.     fi
  97.     
  98.     i_fs_cnt=`expr $i_fs_cnt + 1`
  99. }
  100. done


  101. #--彙總按檔案系統使用率生成的陣列--#
  102. for i in "${a_red_fs[@]}"
  103. do
  104.    [ $i_red_fs_cnt -le 0 ] && break
  105.    a_full_fs[$i_full_fs_cnt]=$i
  106.    i_full_fs_cnt=`expr $i_full_fs_cnt + 1`
  107. done
  108. for i in "${a_yell_fs[@]}"
  109. do
  110.    [ $i_yell_fs_cnt -le 0 ] && break
  111.    a_full_fs[$i_full_fs_cnt]=$i
  112.    i_full_fs_cnt=`expr $i_full_fs_cnt + 1`
  113. done
  114. for i in "${a_other_fs[@]}"
  115. do
  116.    a_full_fs[$i_full_fs_cnt]=$i
  117.    i_full_fs_cnt=`expr $i_full_fs_cnt + 1`
  118. done

  119. if [ $i_print_debug_flag -eq 1 ]
  120. then
  121.     echo "-->0000000 i_nofs_cnt=$i_nofs_cnt"
  122.     echo "-->1111111 i_red_fs_cnt=$i_red_fs_cnt"
  123.     echo "-->2222222 i_yell_fs_cnt=$i_yell_fs_cnt"
  124.     echo "-->3333333 i_other_fs_cnt=$i_other_fs_cnt"
  125.     
  126.     echo "--------------------------------------------------"
  127.     echo "--------------------------------------------------"
  128.     
  129.     i_cnt=0
  130.     for i in "${a_nofs[@]}"
  131.     do
  132.       echo "-->$i_cnt $i"
  133.       i_cnt=`expr $i_cnt + 1`
  134.     done
  135.     
  136.     
  137.     echo "--------------------------------------------------"
  138.     echo "--------------------------------------------------"
  139.     
  140.     i_cnt=0
  141.     for i in "${a_red_fs[@]}"
  142.     do
  143.       echo "-->$i_cnt $i"
  144.       i_cnt=`expr $i_cnt + 1`
  145.     done
  146.     
  147.     echo "--------------------------------------------------"
  148.     echo "--------------------------------------------------"
  149.     
  150.     i_cnt=0
  151.     for i in "${a_yell_fs[@]}"
  152.     do
  153.       echo "-->$i_cnt $i"
  154.       i_cnt=`expr $i_cnt + 1`
  155.     done
  156.     
  157.     echo "--------------------------------------------------"
  158.     echo "--------------------------------------------------"
  159.     
  160.     i_cnt=0
  161.     for i in "${a_other_fs[@]}"
  162.     do
  163.       echo "-->$i_cnt $i" > /dev/null
  164.       i_cnt=`expr $i_cnt + 1`
  165.     done

  166. fi


  167. #------------------------------------------------------------------------------#
  168. [ $i_debug_flag -eq 1 ] && exit 0
  169. #------------------------------------------------------------------------------#

  170. #--html being--#
  171. echo "\
  172. <html> \
  173. <head> <title>xx銀行815生產檔案系統空間使用率 </title> \
  174. <meta http-equiv=\"refresh\" content=\"60\" > \
  175. </head> \
  176. \
  177. <body> \
  178.  \
  179.   <center> \
  180.     <h2><font color=red>xx銀行815生產檔案系統空間使用率 </font></h2> \
  181.     <font color=blue> 檔案系統數量:$i_fs_cnt 檢查時間:$Date,$Time </font> \
  182.     <b> <font color=red> <a href=首頁&nbsp</a> </font> </b> \
  183.     <hr color=blue> \
  184.   </center> " > $i_fs_html

  185. #--顯示未取得檔案系統空間監控檔案的系統--#
  186. echo " <b> <font color=red size=3> 以下系統無法監控檔案系統空間:</font> <br>" >> $i_fs_html
  187. i_max=${#a_nofs[@]}
  188. if [ $i_max -ge 1 ]
  189. then
  190.   i_cnt=0
  191.   for i_inlog in "${a_nofs[@]}"
  192.   do
  193.     i_proname=`echo $i_inlog|cut -d'_' -f1`
  194.     i_sysname=`echo $i_inlog|cut -d'_' -f2`
  195.     i_sysip=`echo $i_inlog|cut -d'_' -f4`
  196.     echo "[$i_sysip]*" >> $i_fs_html
  197.     i_cnt=`expr $i_cnt + 1`
  198.     i_cnt_mod=`expr $i_cnt % 10`
  199.     if [ $i_cnt -ge 1 -a $i_cnt_mod -eq 0 ]
  200.     then
  201.       echo " <br> " >> $i_fs_html
  202.     fi
  203.   done
  204. fi
  205. echo " </b>" >> $i_fs_html


  206. #for i_inlog in `ls $i_aixfs_log`
  207. for i_inlog in "${a_full_fs[@]}"
  208. do
  209. {
  210.     i_proname=`echo $i_inlog|cut -d'_' -f1`
  211.     i_sysname=`echo $i_inlog|cut -d'_' -f2`
  212.     i_sysip=`echo $i_inlog|cut -d'_' -f4`

  213.     #echo "-->file_name=`pwd`/$i_inlog"
  214.     #echo "-->sysip=$i_sysip,sysname=$i_sysname"
  215.     echo " <table border=1 align=center cellpadding=4 width=700> \
  216.         <caption><b><font size=3>專案集${i_proname} 主機名${i_sysname} IP地址$i_sysip</font></b></caption> <br> \
  217.         <tr align=left valign=middle bgcolor=#5F9EA0> \
  218.            <th width=250>檔案系統</th> \
  219.            <th width=150>總量MB</th> \
  220.             <th width=150>使用量MB</th> \
  221.             <th width=150>使用率%</th> \
  222.          </tr> " >> $i_fs_html

  223.         while read i_line
  224.         do
  225.         {
  226.                 i_fsname=`echo $i_line|awk -F":" '{print $1}'`
  227.                 i_total=`echo $i_line|awk -F":" '{print $2}'`
  228.                 i_use=`echo $i_line|awk -F":" '{print $3}'`
  229.                 i_utl=`echo $i_line|awk -F":" '{print $4}'`

  230.                 i_fsname=`echo $i_fsname`
  231.                 i_total=`echo $i_total`
  232.                 i_use=`echo $i_use`
  233.                 i_utl=`echo $i_utl`
  234.                 i_warning=`echo $i_utl | awk -F"%" '{print $1}' | awk -F"." '{print $1}' `
  235.                 i_warning_color='white'
  236.                 #echo "--1>$i_fsname,$i_total,$i_use,$i_utl,warning=$i_warning,warging_color=$i_warning_color--"
  237.                 if [ "${i_warning}X" = "X" ]
  238.                 then
  239.                    i_warning=99
  240.                 fi
  241.                 if [ $i_warning -ge 80 ]
  242.                 then
  243.                     i_warning_color='#FF0000'
  244.                 elif [ $i_warning -ge 60 ]
  245.                 then
  246.                     #i_warning_color='#F08080'
  247.                     i_warning_color='#FFD700'
  248.                 else
  249.                     #continue
  250.                     echo " " > /dev/null
  251.                 fi
  252.                 #echo "--2>$i_fsname,$i_total,$i_use,$i_utl,warning=$i_warning,warging_color=$i_warning_color--"

  253.            echo "<tr align=left valign=middle bgcolor=$i_warning_color> \
  254.            <td width=250>$i_fsname</td> \
  255.            <td width=150>$i_total</td> \
  256.            <td width=150>$i_use</td> \
  257.            <td width=150>$i_utl</td> \
  258.            </tr> " >> $i_fs_html

  259.         }
  260.         done < $i_inlog
  261.   echo " </table> " >> $i_fs_html

  262. }
  263. done # end of --for i_inlog in "${a_full_fs[@]}"

  264. #--html end--#
  265. echo "<b> <br> \
  266.           <center> \
  267.              <font size=3> \
  268.                  <a href=首頁&nbsp</a> <br> \
  269.              </font> \
  270.           </center> \
  271.       </b> \
  272.  </body> \
  273. </html> " >> $i_fs_html

  274. cp -f $i_fs_html $i_index_html

  275. cd $olddir

  276. nowtime=`date +'%Y-%m-%d %T'`
  277. echo "-->$nowtime,make aix fs html OK!"

  278. exit 0


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22661144/viewspace-1707644/,如需轉載,請註明出處,否則將追究法律責任。

相關文章