前言
大家好,這里是浩道linux,主要給大家分享linux、python、網(wǎng)絡(luò)通信相關(guān)的IT知識(shí)平臺(tái)。
今天浩道跟大家分享這兩天對(duì)實(shí)習(xí)生階段考核時(shí)給他布置的5道shell腳本題目,雖然花了兩天時(shí)間調(diào)試完成,但是質(zhì)量還是不錯(cuò)的,決定加雞腿,順便分享給大家看看!
1、檢測(cè)兩臺(tái)服務(wù)器指定目錄下的文件一致性
#!/bin/bash ###################################### 檢測(cè)兩臺(tái)服務(wù)器指定目錄下的文件一致性 ##################################### #通過(guò)對(duì)比兩臺(tái)服務(wù)器上文件的md5值,達(dá)到檢測(cè)一致性的目的 dir=/data/web b_ip=192.168.88.10 #將指定目錄下的文件全部遍歷出來(lái)并作為md5sum命令的參數(shù),進(jìn)而得到所有文件的md5值,并寫入到指定文件中 finddir-typef|xargsmd5sum>/tmp/md5_a.txt sshb_ip"finddir-typef|xargsmd5sum>/tmp/md5_b.txt" scpb_ip:/tmp/md5_b.txt/tmp #將文件名作為遍歷對(duì)象進(jìn)行一一比對(duì) forfin`awk'{print2}/tmp/md5_a.txt'`do #以a機(jī)器為標(biāo)準(zhǔn),當(dāng)b機(jī)器不存在遍歷對(duì)象中的文件時(shí)直接輸出不存在的結(jié)果 ifgrep-qw"f"/tmp/md5_b.txt then md5_a=`grep-w"f"/tmp/md5_a.txt|awk'{print1}'` md5_b=`grep-w"f"/tmp/md5_b.txt|awk'{print1}'` #當(dāng)文件存在時(shí),如果md5值不一致則輸出文件改變的結(jié)果 if[md5_a!=md5_b]then echo"fchanged." fi else echo"$fdeleted." fi done
2、定時(shí)清空文件內(nèi)容,定時(shí)記錄文件大小
#!/bin/bash ################################################################# 每小時(shí)執(zhí)行一次腳本(任務(wù)計(jì)劃),當(dāng)時(shí)間為0點(diǎn)或12點(diǎn)時(shí),將目標(biāo)目錄下的所有文件內(nèi)#容清空,但不刪除文件,其他時(shí)間則只統(tǒng)計(jì)各個(gè)文件的大小,一個(gè)文件一行,輸出到以時(shí)#間和日期命名的文件中,需要考慮目標(biāo)目錄下二級(jí)、三級(jí)等子目錄的文件 ################################################################ logfile=/tmp/`date+%H-%F`.log n=`date+%H` if[n-eq00]||[n-eq12] then #通過(guò)for循環(huán),以find命令作為遍歷條件,將目標(biāo)目錄下的所有文件進(jìn)行遍歷并做相應(yīng)操作 foriin`find/data/log/-typef` do true>i done else foriin`find/data/log/-typef` do du-shi>>$logfile done fi
3、檢測(cè)網(wǎng)卡流量,并按規(guī)定格式記錄在日志中
#!/bin/bash ####################################################### #檢測(cè)網(wǎng)卡流量,并按規(guī)定格式記錄在日志中#規(guī)定一分鐘記錄一次 #日志格式如下所示: #2019-08-1220:40 #ens33input:1234bps #ens33output:1235bps ######################################################3 while: do #設(shè)置語(yǔ)言為英文,保障輸出結(jié)果是英文,否則會(huì)出現(xiàn)bug LANG=en logfile=/tmp/`date+%d`.log #將下面執(zhí)行的命令結(jié)果輸出重定向到logfile日志中 exec>>$logfile date+"%F%H:%M" #sar命令統(tǒng)計(jì)的流量單位為kb/s,日志格式為bps,因此要*1000*8 sar-nDEV159|grepAverage|grepens33|awk'{print$2," ","input:"," ",$5*1000*8,"bps"," ",$2," ","output:"," ",$6*1000*8,"bps"}' echo"####################" #因?yàn)閳?zhí)行sar命令需要59秒,因此不需要sleep done
4、計(jì)算文檔每行出現(xiàn)的數(shù)字個(gè)數(shù),并計(jì)算整個(gè)文檔的數(shù)字總數(shù)
#!/bin/bash ######################################################### #計(jì)算文檔每行出現(xiàn)的數(shù)字個(gè)數(shù),并計(jì)算整個(gè)文檔的數(shù)字總數(shù) ######################################################## #使用awk只輸出文檔行數(shù)(截取第一段) n=`wc-la.txt|awk'{print$1}'` sum=0 #文檔中每一行可能存在空格,因此不能直接用文檔內(nèi)容進(jìn)行遍歷 foriin`seq1$n`do #輸出的行用變量表示時(shí),需要用雙引號(hào) line=`sed-n"$i"pa.txt`#wc-L選項(xiàng),統(tǒng)計(jì)最長(zhǎng)行的長(zhǎng)度 n_n=`echo$line|seds'/[^0-9]//'g|wc-L` echo$n_nsum=$[$sum+$n_n] done echo"sum:$sum" 殺死所有腳本 #!/bin/bash ################################################################ #有一些腳本加入到了cron之中,存在腳本尚未運(yùn)行完畢又有新任務(wù)需要執(zhí)行的情況, #導(dǎo)致系統(tǒng)負(fù)載升高,因此可通過(guò)編寫腳本,篩選出影響負(fù)載的進(jìn)程一次性全部殺死。 ################################################################ psaux|grep指定進(jìn)程名|grep-vgrep|awk'{print$2}'|xargskill-9
5、從 FTP 服務(wù)器下載文件
#!/bin/bash if[$#-ne1];then echo"Usage:$0filename" fi dir=$(dirname$1) file=$(basename$1) ftp-n-v<
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11380瀏覽量
211455 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9454瀏覽量
86552 -
Shell
+關(guān)注
關(guān)注
1文章
368瀏覽量
23570 -
腳本
+關(guān)注
關(guān)注
1文章
395瀏覽量
15064
原文標(biāo)題:看一看!實(shí)習(xí)生兩天時(shí)間寫出的5個(gè)shell腳本?。?!
文章出處:【微信號(hào):浩道linux,微信公眾號(hào):浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
100個(gè)Linux Shell腳本總結(jié)
嵌入式和物聯(lián)網(wǎng)的shell腳本學(xué)習(xí)指南之shell腳本入門免費(fèi)下載

shell腳本最簡(jiǎn)明的教程

如何創(chuàng)建和執(zhí)行一個(gè)簡(jiǎn)單的Linux shell腳本
109個(gè)實(shí)用shell腳本分享
100個(gè)Shell腳本經(jīng)典案例解析
shell腳本基礎(chǔ)知識(shí)匯總4
shell腳本基礎(chǔ)知識(shí)
Linux Shell腳本經(jīng)典案例分享

分享249個(gè)拿來(lái)即用的shell腳本

Shell腳本檢查工具ShellCheck介紹

評(píng)論