shell應用4
1、編寫getarp.sh腳本文件
(1)通過arping命令發送ARP請求,根據反饋結果記錄MAC地址。
(2)將網段地址(如192.168.4.)賦值給變量NADD,作為檢測地址的前綴。
(3)使用while循環語句,重復檢測目標並記錄MAC地址,主機地址從1-254。
[root@localhost ~]# vi getarp.sh
#!/bin/bash
- 定義網段地址、MAC列表文件
NADD="192.168.4."
FILE="/etc/ethers" - 發送ARP請求,並記錄反饋結果
HADD=1 //定義起始掃描地址
while [ $HADD -lt 128 ]
do
arping -I ens33 -c 2 ${NADD}${HADD} &> /dev/null
if [ $? -eq 0 ] ; then
arp -n | grep ${NADD}${HADD} | awk ‘{print $1,$3}‘ >> $FILE
fi
let HADD++
[root@localhost ~]# chmod +x getarp.sh
[root@localhost ~]# ./getarp.sh //執行檢測程序
[root@localhost ~]# cat /etc/ethers
2.編寫一個名為 scanhost.sh 的掃描腳本,檢查有哪些主機開起來匿名FTP服務,掃描對象為 /etc/ether 文件中的所有IP地址,掃描端口為21.
(1)有很多方法可以檢測一個主機是否開啟匿名FTP服務,這裏采取以wget下載工具訪問FTP根目錄的方式,若能夠成功列表,則視為匿名FTP已開啟,否則視為關閉。
(3)使用for循環語句,讀取TARGET變量中的IP地址,重復探測FTP開啟情況。
[root@localhost ~]# vi scanhost.sh
#!/bin/bash
TARGET=$(awk ‘{print $1}‘ /etc/ethers)
echo "以下主機已開放匿名FTP服務:"
for IP in $TARGET
do
wget ftp://$IP/ &> /dev/null
if [ $? -eq 0 ] ; then
echo $IP
rm -rf index.html //刪除測試產生的臨時文件
fi
done
3、利用for循環批量創建用戶
#!/bin/bash
ULIST=$(cat /root/users.txt)
for UNAME in $ULIST
do
useradd $UNAME
echo "123456" | passwd --stdin $UNAME &>/dev/null
done
4、利用while循環判斷在線的主機
#!/bin/bash
HLIST=$(cat /root/a.txt)
i=130
while [ $i -le 135 ]
do
for IP in $HLIST
do
ping -c 3 -i 0.2 $IP
if [ $? -eq 0 ]
then
echo "host 192.168.8 $i is up">>/1.txt
else
echo "host 192.168.8$i is down">>/2.txt
fi
done
let i++
done
5、利用腳本判斷服務是否啟動,沒有啟動則啟動
#!/bin/bash
case "$1" in
start)
echo -n "qidong"
if sleep 7200 &
then
echo "ok"
fi
;;
stop)
echo -n "tingzhi"
pkill "sleep" &> /dev/null
echo "ok"
;;
status)
if pgrep "sleep" &> dev/null ; then
echo "sleepqidong"
else
echo "sleeptingzhi"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "yongfa: $0 {start|stop|status|restart}"
esac
shell應用4