版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、LINUX編程環(huán)境實(shí)驗(yàn)報(bào)告2B-Shell及編程班級(jí): 姓名:LZ寫在前面親愛的學(xué)弟/學(xué)妹,如果你正因?yàn)楸敬螌?shí)驗(yàn)而困惑,希望你在看完本文后會(huì)幫你解惑。但并不希望你直接copy后上交,自己親手做實(shí)驗(yàn)而得到的提升是只有做完實(shí)驗(yàn)才知道的,而且可能會(huì)發(fā)現(xiàn)一些有意思的問題。相信這次實(shí)驗(yàn)也不會(huì)花費(fèi)太長(zhǎng)時(shí)間。加油,少年一、 實(shí)驗(yàn)內(nèi)容Shell腳本編程,生成TCP活動(dòng)狀況報(bào)告。 netstat -statistics -tcp命令可以列出tcp統(tǒng)計(jì)信息。編寫shell腳本程序,每隔1分鐘生成1行信息:當(dāng)前時(shí)間;這一分鐘內(nèi)TCP發(fā)送了多少報(bào)文;接收了多少報(bào)文;收發(fā)報(bào)文總數(shù);行尾給出符號(hào)+或-或空格(+表示這分鐘
2、收發(fā)報(bào)文總數(shù)比上分鐘多,收發(fā)報(bào)文總數(shù)相同用空格,否則用符號(hào)-)。運(yùn)行示例如下:觀察示例后,又發(fā)現(xiàn)了兩個(gè)需要注意的細(xì)節(jié): 第一行的最后一個(gè)參數(shù)必定是空格; 輸出要對(duì)齊此外,在實(shí)驗(yàn)中發(fā)現(xiàn)netstat -statistics tcp命令的收發(fā)報(bào)文數(shù)所在的行數(shù)是變動(dòng)的,受ICMPMSG長(zhǎng)度的影響。但本程序可以做到不受變動(dòng)行數(shù)的影響,準(zhǔn)確提取收發(fā)報(bào)文數(shù)。詳情將在第三、3和第四部分闡述。二、 實(shí)驗(yàn)步驟及分析經(jīng)過分析,該程序分4步完成:每隔1分鐘生成一行信息、當(dāng)前時(shí)間、一分鐘內(nèi)首發(fā)報(bào)文數(shù)及收發(fā)總數(shù)和根據(jù)收發(fā)總數(shù)的變化行尾給出符號(hào)+或-或空格。下面,將針對(duì)這4個(gè)步驟分別進(jìn)行闡述。1. 每隔1分鐘生成1行信息
3、要實(shí)現(xiàn)這點(diǎn),只需要一個(gè)簡(jiǎn)單的循環(huán)結(jié)構(gòu)即可:while truedo echo “” sleep 60done2. 當(dāng)前時(shí)間使用date命令的格式化輸出。%F是以xxxx-xx-xx的形式打印年月日;%H是兩位數(shù)長(zhǎng)的24小時(shí)的小時(shí)數(shù);%M為分鐘數(shù)。打印效果如下:3. 這一分鐘內(nèi)TCP收、發(fā)報(bào)文數(shù)以及收發(fā)報(bào)文總數(shù)首先,使用netstat -statistics tcp命令查看命令的格式:可見,所需的數(shù)據(jù)被白框圈出,當(dāng)前累計(jì)的收發(fā)報(bào)文數(shù)分別在第10和第11行??梢允褂肁WK命令進(jìn)行提取,條件為NR = 10 和NR = 11 ,每行都是提取第一個(gè)變量,即$1。所以使用語句:recieve_total
4、_before=$(netstat -statistics -tcp | awk NR = 10print $1)send_total_before=$(netstat -statistics -tcp | awk NR = 11print $1)但是,在實(shí)踐中發(fā)現(xiàn),所需的兩個(gè)數(shù)據(jù)位置是不定的,受IcmpMsg長(zhǎng)度的影響,有兩種解決方案: 每次手動(dòng)修改NR后面的值; 用segments received和segments send out匹配需要的行,然后提起該行的第一個(gè)變量。顯然第2個(gè)解決方案是用戶所期望的。所以,語句這樣改正,即可實(shí)現(xiàn)準(zhǔn)確提取收、發(fā)報(bào)文數(shù)而不受netstat命令變化的影響:
5、recieve_total_before=$(netstat -statistics -tcp | awk $2$3/segmentsreceived/print $1)send_total_before=$(netstat -statistics -tcp | awk $2$3$4/segmentssendout/print $1)這樣,提取累計(jì)收、發(fā)報(bào)文數(shù)就完成了。但本次實(shí)驗(yàn)要求列出的數(shù)據(jù)是某一分鐘內(nèi)的。那么就在一分鐘開始的時(shí)候記錄一次累計(jì)收、發(fā)報(bào)文數(shù);60秒后再記錄一次累計(jì)收、發(fā)報(bào)文數(shù)。將兩次記錄相減就是一分鐘內(nèi)的收、發(fā)報(bào)文數(shù);將一分鐘內(nèi)的收、發(fā)報(bào)文數(shù)相加,就是一分鐘內(nèi)的收發(fā)報(bào)文總數(shù)。4
6、. 行尾給出符號(hào)+或-或空格行尾符號(hào)是+、-或空格,取決于本分鐘收發(fā)報(bào)文總數(shù)和前一分鐘收發(fā)報(bào)文總數(shù)的大小關(guān)系:大為+、相等為空格,否則為-。所以,這部分代碼如下:if $total -gt $total_before then More=+ elif $total -eq $total_before then More= else More=- fi正如第一部分所述,本程序中的一個(gè)細(xì)節(jié)是第一行數(shù)據(jù)的尾部必為空格,所以將第一部分提到while循環(huán)之外,尾部直接輸出空格。三、 實(shí)驗(yàn)結(jié)果四、 問題與解決1. 問題: 程序剛開始是正常的,可以反應(yīng)收、發(fā)報(bào)文數(shù)的變化,但后來再調(diào)試的時(shí)候,數(shù)據(jù)全部為0。解
7、答:netstat -statistics tcp命令中,收、發(fā)報(bào)文累計(jì)值所在行會(huì)發(fā)生變化,由IcmpMsg長(zhǎng)度的變化引起。之前程序提取收、發(fā)報(bào)文累計(jì)值是用行數(shù)提取的。但后來行數(shù)發(fā)生了變化,提取的值是在這段時(shí)間不變的值,所以導(dǎo)致了上述情況。將提取策略改變后即可:recieve_total_before=$(netstat -statistics -tcp | awk $2$3/segmentsreceived/print $1)send_total_before=$(netstat -statistics -tcp | awk $2$3$4/segmentssendout/print $1)2
8、. 問題:程序的輸出使用echo命令,不整齊怎么辦?解答:使用printf函數(shù)進(jìn)行格式化輸出即可。 printf %-22s%-8s%-8s%-8s%-8sn $DateandTime $recieve $send $total $More3. 問題:這個(gè)地方為什么報(bào)錯(cuò)?解答:if語句后,“”和“ ”需要和邏輯判斷語句用空格隔開。Shell中的空格十分十分重要!命令需要用空格來提取參數(shù)!參考文獻(xiàn):1 實(shí)用UNIX教程蔣硯軍 清華大學(xué)出版社2 LINUX Shell腳本編程入門3 Unix shell腳本編程,生成TCP活動(dòng)狀況報(bào)告/link?url=q
9、gCU4uuV_pjOf6tSoYVnBhPo2epZP-ILrA8wNTBGUnreF6c8e_DxgPTOAPzJjPWkybKG7uU-K6PEy98biDAU8ls3K2lpHVuhu2bwpjjjxwG附:源代碼DateandTime=$(date +%F %H:%M)recieve_total_before=$(netstat -statistics -tcp | awk $2$3/segmentsreceived/print $1)send_total_before=$(netstat -statistics -tcp | awk $2$3$4/segmentssendout/p
10、rint $1)sleep 60recieve_total=$(netstat -statistics -tcp | awk $2$3/segmentsreceived/print $1)send_total=$(netstat -statistics -tcp | awk $2$3$4/segmentssendout/print $1)recieve=$(expr $recieve_total - $recieve_total_before)send=$(expr $send_total - $send_total_before)total=$(expr $recieve + $send)t
11、otal_before=$totalprintf %-22s%-8s%-8s%-8sn $DateandTime $recieve $send $totalwhile truedo recieve_total_before=$(netstat -statistics -tcp | awk $2$3/segmentsreceived/print $1) send_total_before=$(netstat -statistics -tcp | awk $2$3$4/segmentssendout/print $1) sleep 60 DateandTime=$(date +%F %H:%M) recieve_total=$(netstat -statistics -tcp | awk $2$3/segmentsreceived/print $1) send_total=$(netstat -statistics -tcp | awk $2$3$4/segmentssendout/print $1) recieve=$(expr $recieve_total - $recieve_total_before) send=$(expr $send_total - $send_total_before) total=$(expr $recieve + $send) if
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 游泳行業(yè)游泳技巧培訓(xùn)總結(jié)
- 零食店服務(wù)員工作技巧
- 時(shí)尚店銷售員的工作總結(jié)
- 快遞行業(yè)派送專員培訓(xùn)總結(jié)
- 《瑜伽與健康》課件
- 《卒中優(yōu)化治療》課件
- 2023年江蘇省宿遷市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2022年青海省西寧市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年江蘇省鹽城市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2021年河北省石家莊市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- GB 18218-2000重大危險(xiǎn)源辨識(shí)
- 神通數(shù)據(jù)庫管理系統(tǒng)v7.0企業(yè)版-2實(shí)施方案
- 油田視頻監(jiān)控綜合應(yīng)用平臺(tái)解決方案
- 人體內(nèi)臟器官結(jié)構(gòu)分布圖詳解
- 福建省泉州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)及行政區(qū)劃代碼
- 酒精性腦病的護(hù)理查房實(shí)用版課件
- OCT青光眼及視野報(bào)告
- 三年級(jí)新教科版科學(xué)《我們來做-“熱氣球”》說課稿
- 國(guó)家電網(wǎng)有限公司十八項(xiàng)電網(wǎng)重大反事故措施(修訂版)
- 凈水廠課程設(shè)計(jì)
- (完整版)八年級(jí)上綜合性學(xué)習(xí)-我們的互聯(lián)網(wǎng)時(shí)代-練習(xí)卷(含答案)
評(píng)論
0/150
提交評(píng)論