您的位置:首页 > 运维架构 > Shell

Bash shell脚本练习(三)

2012-04-04 21:21 453 查看
1.扫描同一网络内IP使用情况

#!/bin/bash
#-------------------------------
#Version        0.1
#Filename:      ipscan.sh
#Date:          2011.03.22
#Email:         liyaoyi@163.com
#-------------------------------
#
#定义变量
NETWORK=$(ifconfig eth0 | grep "inet addr" | awk '{print $2}'|awk -F: '{print $2}' \
| awk -F"." '{print $1"."$2"."$3}')
IPTEMP=$(mktemp)
IPUP="/tmp/ipup.txt"
IPDOWN="/tmp/ipdown.txt"

if [ ! -f "$IPUP"  -a ! -f "$IPDOWN" ]; then
touch $IPUP $IPDOWN
fi
#扫描网络并分类输出IP
echo "正在执行扫描,请稍候..."
echo ""
for ip in `seq 1 254`
do
arping -c 1 "$NETWORK".$ip > $IPTEMP

if [ $? -eq 0 ]; then
cat $IPTEMP | grep "reply" | awk '{print $4,$5}' >> $IPUP
else
cat $IPTEMP | head -n 1 | awk '{print $2}' >> $IPDOWN
fi
done
#将结果输出并清除临时文件
clear
echo  "正在使用的IP及MAC:"
echo ""
cat $IPUP
echo ""

echo "未使用的IP:"
echo ""
cat $IPDOWN
echo ""
rm -f $IPTEMP $IPUP $IPDOWN

实现原理:通过for循环,使用arping判断IP是否存活,判断的结果分类输出,包含IP、MAC。

2.防SSH和vsftpd暴力破解
#!/bin/bash
#Date:  20120322
TMP=`mktemp`
DEFINE=20
log=/var/log/black.log
cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2"="$1}' > $TMP

for i in `cat $TMP`
do
IP=`echo $i | awk -F"=" '{print $1}'`
NUM=`echo $i | awk -F"=" '{print $2}'`
if [ $NUM -gt $DEFINE ]; then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo "sshd:$IP">>/etc/hosts.deny
fi
fi
done

rm -rf $TMP

实现原理:分析/var/lob/secure日记,计算同一IP地址访问验证失败次数,达到次数后加入/etc/hosts.deny文件中禁止其访问。
本文出自 “网络收藏夹” 博客,请务必保留此出处http://liyaoyi.blog.51cto.com/442933/826400
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: