检查网段内在线ip的脚本

回复 收藏
写一个shell脚本,把192.168.0.0/24网段在线的ip列出来。
思路: for循环, 0.1 --  0.254  依次去ping,能通说明在线。
2015-11-18 15:11 举报
已邀请:
0

googleqicq

赞同来自:

学习下
0

陈沛

赞同来自:

  1. #!/bin/bash
  2. #
  3. #时间:
  4. #作者
  5. #说明

  6. IP_num="192.168.0."

  7. for i in $(seq 1 254)
  8. do
  9.         ping -c 1 ${IP_num}$i > /dev/null
  10.         if [ $? -eq 0 ]
  11.         then
  12.                 echo ${IP_num}$i"   OK"
  13.         else
  14.                 echo ${IP_num}$i"   error"
  15.         fi
  16. done
0

krven

赞同来自:

#!/bin/sh
ipd=192.168.1.
for a in `seq 1 254`
do
ping -c 2 $ipd$a >/dev/null
if [ $? = 0 ]
then
        echo "echo $ipd$a is on"
        echo $ipd$a is on >> 2.txt

else
echo "echo $ipd$a is not"
echo $ipd$a is not >>3.txt
fi
done
0

tutu

赞同来自:

q
0

googleqicq

赞同来自:


#!/bin/bash
##
for i in `seq 1 254`
do
    ping -c1 -w1 192.168.0.$i
if [ "$?" -eq 0 ]
then
echo "192.168.0.$i" >> 1.txt
fi
done
0

hlymlv

赞同来自:

看看
0

wzwyql

赞同来自:

有时候会遇到这个情况,ping一个ip会很长时间没有结果(我遇到过好几分钟,最后还是我手动停止的),这样的话就会严重影响脚本运行的速度,有没有解决办法?
0

汤小东

赞同来自:

learn
0

linuxjishuren

赞同来自:

想练习下
0

方琪

赞同来自:


能否解释下 ping -c 1 ${IP_num}$i > /dev/null
        if [ $? -eq 0 ]  
这两句的后面这句。为什么可以通过判断$? 的值判断是否ping成功呢
0

陈沛

赞同来自:

方琪 发表于 2015-11-29 18:11
能否解释下 ping -c 1 ${IP_num}$i > /dev/null
        if [ $? -eq 0 ]  
这两句的后面这句。为什么 ...

ping -c 1 ${IP_num}$i > /dev/null        ping的通返回码是0,反之就是非零
if [ $? -eq 0 ]                                    $?表示获取的是程序执行的返回码
0

方琪

赞同来自:

陈沛 发表于 2015-11-29 22:05
ping -c 1 ${IP_num}$i > /dev/null        ping的通返回码是0,反之就是非零
if [ $? -eq 0 ]         ...

明白了  多谢说明
0

yangjian319

赞同来自:

学过了。
0

loveyouhyf

赞同来自:

#! /bin/bash
while :;
do
read -p "please enter the scan iprang:  " num
if echo "$num"|[ -n "`sed -n '/[a-Z]/p'`" ]
then
echo "error,please enter a number,again"
elif [ $num -ge 0 ] && [ $num -le 254 ]
then
IP_num="192.168.$num."
for i in $(seq 1 254)
do
        ping -c 1 ${IP_num}$i > /dev/null
        if [ $? -eq 0 ]
        then
                echo ${IP_num}$i"   up"
        else
                echo ${IP_num}$i"   down"
        fi
done
else
echo "error,please enter a number,again"
fi
done
0

xueyongbo

赞同来自:

  1. #!/bin/bash

  2. # By xueyongbo
  3. # 2015/12/6 20:00

  4. trap "exit 1" INT

  5. ip_num=192.168.0.

  6. for i in `seq 1 254`
  7. do
  8.         ping -c 1 -w 5  ${ip_num}$i > /dev/null
  9.         if [ $? -eq 0 ]
  10.         then
  11.                 echo ${ip_num}$i >> onlineip

  12.         else
  13.                 echo ${ip_num}$i >> offlineip
  14.         fi
  15. done

  16. echo  "those  is online."
  17. cat onlineip

  18. echo  "those  is offline."
  19. cat offlineip


0

王焱峰

赞同来自:

厉害!
0

balich

赞同来自:

本帖最后由 balich 于 2015-12-14 10:48 编辑

#!/bin/bash
#2015-12-12
#
for n in {1..254};do
        host=192.168.0.$n
        ping -c2 $host &> /dev/null
        if [ $? =0 ];then
                echo "$host is UP."
                echo "$host" >> /root/onlinehost.txt
        else
                echo "$host is DOWN."
        fi
done


0

zql254

赞同来自:

本帖最后由 zql254 于 2015-12-12 22:20 编辑
  1. #!/bin/bash
  2. ipa="192.168.0."
  3. for i in `seq 1 254`;do
  4. ping -c 1 $ipa$i>/dev/null&&echo "$ipa$i in online"||echo "$ipa$i is offline"
  5. done

0

qiaoxin360

赞同来自:

  1. #!/bin/bash

  2. for i in `seq 1 254`;do
  3.     ping -c1 -W1 192.168.0.$i > /dev/null
  4.     [ $? -eq 0 ] && echo 192.168.0.$i
  5. done
0

沧海一叶

赞同来自:

#!/bin/bash
#
for i in `seq 1 254`; do
ping -c 1 -W 1 192.168.0.$i >& /dev/null
if [ $? -eq 0 ];then
  echo "192.168.0.$i is online"
else
  echo "192.168.0.$i is down"
fi
done
0

J!_yuan

赞同来自:

  1. #!/bin/bash
  2. #functions:
  3. #       check alive hosts!!!
  4. #        then echo the ip.

  5. IP=121.42.170.
  6. echo "the online hosts ip:"
  7. for i in `seq 1 245`;do
  8.         ping -c1 $IP$i > /dev/null
  9.         if [ $? -eq 0 ];then
  10.                 echo "$IP$i"
  11.         fi
  12. done

  13. exit 0
0

rolay8

赞同来自:


  1. #!/bin/bash

  2. ip="192.168.0."

  3. for i in `seq 1 254`;do
  4.     ping -c1 -w1 ${ip}${i} >/dev/null

  5.     if [[ $? -eq 0 ]];then
  6.         echo ${ip}${i}" is useful!"
  7.     fi
  8. done
0

出VU时代

赞同来自:

学习了
0

prospect

赞同来自:

#!/bin/sh
#author@zhanwang.xie

IP_graph='192.168.1.'

for i in `seq 1 254`
do
    ping -c 1 ${IP_graph}$i >/dev/null
    if [[ $? -eq 0 ]];then
        echo  ${IP_graph}$i" is online!"
    fi
done
0

inzaghidai

赞同来自:

看看
0

inzaghidai

赞同来自:

看看正确答案
0

linuxjishuren

赞同来自:

krven 发表于 2015-11-19 12:54
#!/bin/sh
ipd=192.168.1.
for a in `seq 1 254`

恩,不错,采纳了,顺便学习下,呵呵
0

casparcc

赞同来自:

学习学习
0

t0ny1988

赞同来自:

#!/bin/bash
ip=192.168.0.
for i in `seq 1 254`
do
ping -c 4 $ip$i >/dev/null
if [ $? -eq 0 ]
then
  echo "$ip$i is up" >> up.txt
else
  echo "$ip$i is down" >> down.txt
fi
done
0

拉卡

赞同来自:


#!bin/bash
#判断网段内哪些IP在线

for i in {1..254}
do
m=`ping -c1 172.28.17.$i |grep 'packets' |awk 'OFS=" [ ]+" {print$6}' |sed 's/%//g'`
if [ $m -eq 0 ]
then
echo "IP 172.28.17.$i is online"
fi
done

0

tutu

赞同来自:

答案
0

18898562952

赞同来自:

11
0

fish

赞同来自:

学习  认真学习
0

初秋飞马

赞同来自:

本帖最后由 初秋飞马 于 2016-1-28 12:08 编辑
  1. #!/bin/bash
  2. # 2016-01-28 11:54:05
  3. for i in `seq 1 254`
  4. do
  5.     ip=192.168.0.$i
  6.     pingmsg=`ping -c 1 $ip |grep Unreachable`
  7.     if [ "$pingmsg" == "" ]
  8.     then
  9.         echo "$ip       ""on line..."
  10.     fi
  11. done

0

KICAZ629

赞同来自:

练习
0

lyhabc

赞同来自:

本帖最后由 lyhabc 于 2016-1-29 18:44 编辑

#!/bin/bash
##write by 2016-1-29
echo "" > /tmp/err.log
ipn=192.168.0.
for i in $(seq 1 254)
do
        ping -c 1 ${ipn}${i} > /dev/null 2>&1
        if [ $? -ne 0 ]
        then
                echo "${ipn}${i} no " >> /tmp/err.log
        else
                echo "${ipn}${i} yes " >> /tmp/err.log
        fi
done

cat  /tmp/err.log

192.168.1.1 yes
192.168.1.2 no
192.168.1.3 no
192.168.1.4 no
192.168.1.5 no
192.168.1.6 yes


0

435664265

赞同来自:

kankan
0

北辰星

赞同来自:

#!/bin/bash
for i in `seq 1 254`
do
        ping -c 2 -w 10 192.168.1.$i > /root/ip.txt
        if [ $? -eq 0 ]
        then
                echo "192.168.1.$i is online" >> /root/ip.log
        fi
done
0

jinm

赞同来自:

#! /bin/bash
for a in `seq 1 254`
do
ip=192.168.0.${a}
  ping -c 1 -w 3 ${ip}&>/dev/null
   if [ $? eq 0 ]
    then
   echo "$ip is up"
     else
   echo "$ip is down!!!"
fi
done
0

大雁

赞同来自:

学习下

0

王斌

赞同来自:

#!/bin/bash

#Auth: Cityzen Wang

#Date: 2017-05-04

#Scripts: Check ip

for i in `seq 1 10`

do

    ping 192.168.32.$i |head -n2 > /tmp/ip.txt

    a=`grep -i unreachable /tmp/ip.txt`

    if [ -z "$a" ];then

        echo "192.168.32.$i is reachable."

    else

        echo "192.168.32.$i is unreachable."

    fi

done

0

songyi123

赞同来自:

看看

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: