linux 检测ip是否在线

ping任意ip段,将过程放到后台,加快速度

#!/bin/bash
#author:nineven
file=mktemp /tmp/pingip.XXXXXX
readonly thistime=$(date +%F)
echo "------------------开始扫描,本次扫描时间为: date +%F'   '%T ----------
---------------" >> ./ipinfo_$thistime.txt  ###和上面是同一行,内容太多,显示不全,因此写了两行
pingip()
{

    for i in $(seq $at $ap) ;do
    for j in $(seq $bt $bp);do
    for x in $(seq $ct $cp);do
        if [ $dt -eq 0 ];then
            for y in $(seq 1  $dp);do #dt=0 dp=255
            {
                ip=$i.$j.$x.$y
            #   echo $ip
            #   echo $ip                
            }&
                done
        fi
    done
    done
    done

    echo -e "---------------结束扫描,,结束时间为: date +%F' '%T -------" >> ./ipinfo_$thistime.txt
    if [ $(ps -ef | egrep '.*[0-9][[:space:]]+ping.*' |wc -l)  -le 1 ];then
        echo "ip 检测成功,在线ip总共 cat $file | wc -l个,ip文件保存在本目录下 
        ipinfo_$thistime.txt 文件中"           ###和上面是同一行,内容太多,显示不全,因此写了两行
    fi
ifpanduan()
{
    if [ $d -eq 0 ] && [ $a -ne 0 ] && [ $b -ne 0 ] && [ $c -ne 0 ];then
        let at=ap=a,bt=bp=b,ct=cp=c,dt=0,dp=255
        pingip
    elif [ $d -eq 0 ] && [ $a -ne 0 ] && [ $b -ne 0 ] && [ $c -eq 0 ];then
        let at=ap=a,bt=bp=b,ct=0,cp=255,dt=0,dp=255
        pingip
    elif [ $d -eq 0 ] && [ $a -ne 0 ] && [ $b -eq 0 ] && [ $c -eq 0 ] ;then
        let at=ap=a,bt=0,bp=255,ct=0,cp=255,dt=0,dp=255
        pingip
    elif [ $d -eq 0 ] && [ $a -eq 0 ] && [ $b -eq 0 ] && [ $c -eq 0 ];then
        let at=1,bt=ct=dt=0,ap=bp=cp=dp=255
        pingip
    else
        ping -c1 -W1 $a.$b.$c.$d &> /dev/null && (echo "$a.$b.$c.$d is up" ; 
        echo "$a.$b.$c.$d        date +%F'        '%T" >> ./$thistime.txt) 
        || echo "$a.$b.$c.$d is down"      ###和上面是同一行,内容太多,显示不全,因此写了两行
    fi
}

read -p "请输入网络地址 :" ip
echo $ip | grep -E "^(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>.){3}
\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>$" &> /dev/null       ###和上面是同一行,内容太多,因此写了两行
if [ $? -eq 0 ] ;then
    echo "ip输入合法,正在判断ip是否在线,请勿按ctrl+c"
    a=$(echo $ip | cut -d. -f1)
    b=$(echo $ip | cut -d. -f2)
    c=$(echo $ip | cut -d. -f3)
    d=$(echo $ip | cut -d. -f4)
    ifpanduan
    rm -f $file >> /dev/null
else
    echo "ip输入不合法"                     
fi

#!/bin/bash
file=mktemp /tmp/pingip.XXXXXX
read -p "请输入网络地址 :" ip
i=echo $ip | cut -d'.' -f1-3
for z in {1..255};do
{
    ip=$i.$z
    ping -c1 -W1 $ip &> /dev/null && (echo "$ip is up" ) && echo ip >> $file
}&
done
sleep 1
echo "cat $file | wc -l在线"
rm -f $file &> /dev/null

#!/bin/bash
file=mktemp /tmp/pingip.XXXXXX
a=255
i=10.1.250
y=1
while [ $y -le $a ];do
let z=y
while [ $z -le $[y+14] ] ;do
{
    ip=$i.$z
    ping -c1 -W1 $ip &> /dev/null && (echo "$ip is up" ) && echo ip >> $file
}&
let z++
done
let y+=15
done
sleep 1
echo "cat $file | wc -l在线"
rm -f $file &> /dev/null

类似文章