天天看點

實用運維shell腳本鑒賞

1、檢測兩台伺服器指定目錄下的檔案一緻性

#!/bin/bash
######################################
檢測兩台伺服器指定目錄下的檔案一緻性
#####################################
#通過對比兩台伺服器上檔案的md5值,達到檢測一緻性的目的
dir=/data/web
b_ip=192.168.88.10
#将指定目錄下的檔案全部周遊出來并作為md5sum指令的參數,進而得到所有檔案的md5值,并寫入到指定檔案中
find dir -type f|xargs md5sum>/tmp/md5_a.txt
sshb_ip "find dir -type f|xargs md5sum>/tmp/md5_b.txt"
scpb_ip:/tmp/md5_b.txt /tmp
#将檔案名作為周遊對象進行一一比對
for f in `awk '{print 2} /tmp/md5_a.txt'`do
#以a機器為标準,當b機器不存在周遊對象中的檔案時直接輸出不存在的結果
if grep -qw "f" /tmp/md5_b.txt
then
md5_a=`grep -w "f" /tmp/md5_a.txt|awk '{print 1}'`
md5_b=`grep -w "f" /tmp/md5_b.txt|awk '{print 1}'`
#當檔案存在時,如果md5值不一緻則輸出檔案改變的結果
if [md5_a != md5_b ]then
echo "f changed."
fi
else
echo "$f deleted."
fi
done      

2、定時清空檔案内容,定時記錄檔案大小

#!/bin/bash
#################################################################
每小時執行一次腳本(任務計劃),當時間為0點或12點時,将目标目錄下的所有檔案内#容清空,但不删除檔案,其他時間則隻統計各個檔案的大小,一個檔案一行,輸出到以時#間和日期命名的檔案中,需要考慮目标目錄下二級、三級等子目錄的檔案
################################################################
logfile=/tmp/`date +%H-%F`.log
n=`date +%H`
if [ n -eq 00 ] || [n -eq 12 ]
then
#通過for循環,以find指令作為周遊條件,将目标目錄下的所有檔案進行周遊并做相應操作
for i in `find /data/log/ -type f`
do
true > i
done
else
for i in `find /data/log/ -type f`
do
du -shi >> $logfile
done
fi      

繼續閱讀