1、编写一个名为getarp.sh 的小脚本,记录局域网中各主机的MAC地址: 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请求,并记录反馈结果
[ -f $FILE ] && /bin/cp -f $FILE $FILE.old //备份原有文件
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++
done
[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已开启,否则视为关闭。 (2)通过awk命令过滤出/etc/ethers文件中的所有IP地址,赋值给变量TARGET。 (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