Shell——實戰

l文峰發表於2020-11-18

指令碼程式設計步驟

1、需求分析
根據系統管理的需求,分析指令碼要實現的功能、功能實現的層次、實現的命令與語句等
2、命令測試
將要用到的命令逐個進行測試,以決定使用的選項、要設定的變數等
3、指令碼程式設計
將測試好的命令寫入指令碼檔案中,並通過各種語句將命令執行的結果儲存、判斷或者發出警報等
4、測試調優
1、對指令碼進行測試,並根據結果進行優化
2、建議一邊程式設計一邊除錯,以減少錯誤的發生

MAC記錄和埠掃描

企業環境說明:
隨著業務的不斷髮展,某公司所使用的Linux伺服器也越來越多。在系統管理和維護過程中,經常需要編寫一些實用的小指令碼,以輔助運維工作,提高效率。
需求描述:
1、編寫名為system.sh的指令碼,記錄區域網中個主機的MAC地址,儲存到/etc/ethers檔案中;若此檔案已存在,應先轉移進行備份;每行一條記錄,第一行為IP地址,第2列為對應的MAC地址
2、檢查有哪些主機開啟了匿名FTP服務,掃描物件為/etc/ethers檔案中的所有IP地址,掃描的埠為21

[root@client3 ~]# vi system.sh
#!/bin/bash
#記錄線上使用者IP地址和MAC地址,並測試其是否開放21號埠
nadd="20.0.0."
file="/etc/ethers"
#傳送arp請求,並記錄反饋結果
touch /etc/ethers
touch /etc/ethers.old
touch file1.txt
[ -f $file ] && /bin/cp -f $file $file.old ##備份原有檔案
hadd=1  ##定義起始掃描地址
while [ $hadd -le 254 ]
do
arping -c 2 -w 1 -I ens33 ${nadd}${hadd} &> /dev/null
if [ $? -eq 0 ] ;
then
arp -n | grep ${nadd}${hadd} | awk '{print $1,$3}' >> $file
fi
let hadd++
done
sort -u $file > /root/file1.txt
# ftp 線上測試
target=$(awk '{print $1}' /root/file1.txt)
for ip in $target
do
 wget ftp://$ip/ &> /dev/null
 if [ $? -eq 0 ]
 then echo "$ip ftp server is up"
 rm -rf index.html
 fi
done
[root@client3 ~]# sh system.sh
[root@client3 ~]# cat file1.txt
20.0.0.1 00:50:56:c0:00:08
20.0.0.11 00:0c:29:9c:9e:90
20.0.0.12 00:0c:29:74:49:d1
20.0.0.2 00:50:56:e3:6f:c1

相關文章