LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 836|回复: 13

如何减小这段代码长度,提高准确性,大家看看

[复制链接]
发表于 2004-10-27 19:50:19 | 显示全部楼层 |阅读模式
很简单的一段,但是不太好缩短代码,扫描结果的准确性也不容易提高啊
大家看看吧。
[PHP]#!/bin/bash
# A simple mac address collector.
# Date                2004,10,26
#
# arpwatch [start ip] [end ip]

start_1=`echo $1 | awk -F. '{print $1}'`
start_2=`echo $1 | awk -F. '{print $2}'`
start_3=`echo $1 | awk -F. '{print $3}'`
start_4=`echo $1 | awk -F. '{print $4}'`

oct_1=$start_1
oct_2=$start_2
oct_3=$start_3
oct_4=$start_4

end_1=`echo $2 | awk -F. '{print $1}'`
end_2=`echo $2 | awk -F. '{print $2}'`
end_3=`echo $2 | awk -F. '{print $3}'`
end_4=`echo $2 | awk -F. '{print $4}'`

while [ $oct_1 -le $end_1 ]
do
        while [ $oct_2 -le $end_2 ]
        do
                while [ $oct_3 -le $end_3 ]
                do
                        while [ $oct_4 -le $end_4 ]
                        do
                                ping -c 1  $oct_1.$oct_2.$oct_3.$oct_4 > /dev/null 2>&1 && eth_addr=`arp $oct_1.$oct_2.$oct_3.$oct_4 |awk '{print $3}' |grep -v HWaddress` &&  echo $oct_1.$oct_2.$oct_3.$oct_4 $eth_addr
                                ((oct_4++))
                        done
                        ((oct_3++))
                done
                ((oct_2++))
        done
        ((oct_1++))
done[/PHP]
 楼主| 发表于 2004-10-27 19:53:24 | 显示全部楼层
主要是扫描的速度提不上来,谁给挖一挖shell的潜力,呵呵
发表于 2004-10-28 21:04:42 | 显示全部楼层
这么多循环的嵌套,当然速度快不上来了。呵呵,不过我也记不清如何改正了,问问版主吧
发表于 2004-10-28 21:06:25 | 显示全部楼层
这么多循环的嵌套,当然速度快不上来了。呵呵,不过我也记不清如何改正了,问问版主吧
 楼主| 发表于 2004-10-28 21:13:54 | 显示全部楼层
其实主要的问题是ping命令的超时太慢,而且不论ping是否成功ARP
命令都是有可能成功的。跟循环的关系不大
发表于 2004-10-29 22:03:52 | 显示全部楼层
看来这个最好不要用bash脚本,而是去改ping的源码,然后重新生成ping命令。
 楼主| 发表于 2004-10-29 22:15:57 | 显示全部楼层
en ,不行就用C写吧
 楼主| 发表于 2004-11-2 13:45:22 | 显示全部楼层

找到一个替代的ping

[PHP]#!/bin/bash
# A simple mac address collector.
# Date        2004,10,26
# Note:before use this scripts run atp-get install arping on debian.
# arpwatch [start ip] [end ip]

start_1=`echo $1 | awk -F. '{print $1}'`
start_2=`echo $1 | awk -F. '{print $2}'`
start_3=`echo $1 | awk -F. '{print $3}'`
start_4=`echo $1 | awk -F. '{print $4}'`

oct_1=$start_1
oct_2=$start_2
oct_3=$start_3
oct_4=$start_4

end_1=`echo $2 | awk -F. '{print $1}'`
end_2=`echo $2 | awk -F. '{print $2}'`
end_3=`echo $2 | awk -F. '{print $3}'`
end_4=`echo $2 | awk -F. '{print $4}'`

while [ $oct_1 -le $end_1 ]
do
    while [ $oct_2 -le $end_2 ]
    do
        while [ $oct_3 -le $end_3 ]
        do
            while [ $oct_4 -le $end_4 ]
            do
                arping -r $oct_1.$oct_2.$oct_3.$oct_4 -c 1 >> /etc/mac
                ((oct_4++))
            done
            ((oct_3++))
        done
        ((oct_2++))
    done
    ((oct_1++))
done[/PHP]
 楼主| 发表于 2004-11-2 14:45:11 | 显示全部楼层

我第一个能够用的上的脚本,基本上能用了,还可以进一步开发

[PHP]#!/bin/bash
# gmacls      MAC address collector and static arp table builder.               
# Date        2004,10,26
# Note:before use this scripts run atp-get install arping on debian.

if [ $# -lt 2 ]
then
        echo Usage:
        echo "     $0 [start ip] [end ip]"
        exit 1
fi
if [ -f /etc/mac ]
then
        cat /dev/null > /etc/mac
fi
echo Starting ARP scan process ...
start_1=`echo $1 | awk -F. '{print $1}'`
start_2=`echo $1 | awk -F. '{print $2}'`
start_3=`echo $1 | awk -F. '{print $3}'`
start_4=`echo $1 | awk -F. '{print $4}'`

oct_1=$start_1
oct_2=$start_2
oct_3=$start_3
oct_4=$start_4

end_1=`echo $2 | awk -F. '{print $1}'`
end_2=`echo $2 | awk -F. '{print $2}'`
end_3=`echo $2 | awk -F. '{print $3}'`
end_4=`echo $2 | awk -F. '{print $4}'`
while [ $oct_1 -le $end_1 ]
do
    while [ $oct_2 -le $end_2 ]
    do
        while [ $oct_3 -le $end_3 ]
        do
            while [ $oct_4 -le $end_4 ]
            do
                arping -r -R $oct_1.$oct_2.$oct_3.$oct_4 -c 1|tee -a /etc/mac
                ((oct_4++))
            done
            ((oct_3++))
        done
        ((oct_2++))
    done
    ((oct_1++))
done
echo  Scan process done!
echo  Building static arp table ...
arp -f /etc/mac
echo  Building tatic arp table done![/PHP]
发表于 2004-11-2 16:24:32 | 显示全部楼层
复杂,像天书一样
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表