1. 程式人生 > >編寫MAC記錄與端口掃描腳本的shell腳本

編寫MAC記錄與端口掃描腳本的shell腳本

存在 one target 描述 cto 目標 圖片 col don

MAC記錄與端口掃描腳本

1、需求描述
編寫名為system.sh的小腳本,記錄局域網中各主機的MAC地址,保存到/etc/ethers文件中;
若此文件已存在,應先轉移進行備份;每行一條記錄,第1列為IP地址,第2列為對應的MAC地址
檢查有哪些主機開啟了匿名FTP服務,掃描對象為/etc/ethers文件中的所有IP地址,掃描的端口為21
2、命令測試
分析:記錄局域網中各主機的MAC地址,保存到/etc/ethers文件中;若此文件已存在,
應先轉移進行備份;檢查有哪些主機開啟了匿名FTP服務,掃描對象為/etc/ethers文件中的所有IP地址,
掃描的端口為21
arping?–c?2?–w?1?ip?:發送MAC地址解析請求

arp?–n:紀錄MAC
awk?:打印?ip與MAC地址
使用wget下載的方法測試FTP服務
3、腳本編程與調試
?通過arping命令發送ARP請求,使用if語句根據反饋結果記錄MAC地址
?將網段地址(如192.168.4.)賦值給變量NADD,作為檢測地址的前綴
?使用while循環語句,重復檢測目標並記錄MAC地址,主機地址為1~254
let??HADD++?使得ip地址的主機位自動加1
?通過awk命令過濾出/etc/ethers文件中的所有IP地址,賦值給變量TARGET,
並使用for循環語句,讀取TARGET變量中的IP地址,重復探測FTP開啟情況

實驗步驟
1.編寫名為system.sh的小腳本,記錄局域網中各主機的MAC地址,保存到/etc/ethers文件中;

若此文件已存在,應先轉移進行備份;每行一條記錄,第1列為IP地址,第2列為對應的MAC地址
技術分享圖片
腳本文件如下:
#!/bin/bash
d=/etc/ethers
if [ -f "$d" ] ###判斷有沒有/etc/ethers這個文件
then
(cp /etc/ethers /etc/ethers.bark )&&[ -d "$d" ]&&[ touch "$d" ]
###有,就新備份,刪除,在創個新的
else ###這裏註意,直接命令,用小括號
touch "$d" ###沒有就創建文件
fi
HADD=1 ###定義IP的變量參數,起始值為1
while [ $HADD -lt 12 ] ###循環語句,當IP最後為不小於12,執行循環這裏是做下測試,測試完後改為12改為254
do
ping -c 3 -i 0.2 -W 3 192.168.32.$HADD &> /dev/null ###ping一下
if [ $? -eq 0 ] ###有返回值,
then
echo "192.168.32.$HADD is up" ###輸出此IP開啟
arp -n |grep ether |awk ‘{print $1,$3}‘ > /etc/ethers ###並將IP和對應的mac地址篩選出來,
else ###覆蓋保存到/etc/ethers文件裏
echo "192.168.32.$HADD is down" ###否則,輸出此IP關閉
fi
let HADD++ ###每次變量加1
Done
2.更改權限,運行測試文件
技術分享圖片
3 查看/etc/ethers裏面有沒有存到文件
技術分享圖片

開啟的IP,其和他對應關系的IP都儲存到這裏面來了。

2、並使用for循環語句,讀取TARGET變量中的IP地址,重復探測FTP開啟情況
3、配置腳本文件。直接在system.sh後面添加下面腳本如下
技術分享圖片

TARGET=$(awk ‘($1!="192.168.32.6")&&($1!="192.168.32.1"){print $1}‘ /etc/ethers)
###定義變量文件,要把網關和本機IP去掉,否則會卡機
for n in $TARGET
do
wget ftp://$n &> /dev/null ###當能用ftp下載,則匿名訪問就開啟了,否則關閉。
if [ $? -eq 0 ]
then
echo "ftp 匿名訪問開啟的服務機: $n"
else
echo "ftp 匿名訪問關閉的服務機: $n"
fi
done

運行程序:
技術分享圖片
在將shell腳本中HADD參數範圍改成254,運行就可以用了
技術分享圖片

編寫MAC記錄與端口掃描腳本的shell腳本