Shell腳本應用實戰
實驗環境:
隨着業務的不斷髮展,某公司所使用的linux服務器也越來越多,在系統管理和維護過程中,經常需要編寫一些實用的小腳本,以輔助運維工作,提高工作效率。
拓撲:
需求描述:
? 編寫一個名爲getarp.sh的小腳本,記錄局域網中各主機的MAC地址
1)保存到/etc/ether文件中,若此文件已存在,應先轉移進行備份
2)每行一條記錄,第一列爲IP地址,第二列爲對應的MAC地址
? 編寫一個名爲scanhost.sh的掃描腳本,檢查有哪些主機開啓了匿名FTP服務,掃描對象爲/etc/ether文件中的所有IP地址,掃描的端口爲21
實驗步驟
1. 編寫getarp.sh腳本文件
1)通過arping命令發送ARP請求,根據反饋結果記錄MAC地址
2)將網段地址(如192.168.4.)賦值給變量NADD,作爲檢測地址的前綴
3)使用while循環語句,重複檢測目標並記錄MAC地址,主機地址爲1-254
2. 編寫scanhost.sh腳本
1)有很多方法可以檢測一個主機是否開啓FTP服務,這裏採取wget下載工具訪問FTP根目錄的方式,若能夠成功列表,則視爲匿名FTP已開啓,否則視爲關閉
2)通過awk命令過濾出/etc/ethers文件中的所有IP地址,賦值給變量TARGET
3)使用for循環語句,讀取TARGET變量中的IP地址,重複探測FTP的開啓情況
總結:
1. for語句可根據已知的列表對象重複執行命令序列,更適合無規律的循環操作
2. while語句可根據特定的條件重複執行命令序列,更適合有規律的循環操作
3. case語句可根據變量的不同取值執行不同的命令序列,比多分支的if語句結構更加清晰
4. linux系統中的各種系統服務器腳本都使用case分支結構,以便通過start、stop、restart等位置參數進行控制