需求描述:

  • 使用shell将网段 192.168.1.x网段设备在线情况
  • 将正在使用的ip保存到up.txt中
  • 将未使用的ip保存到down.txt中

使用的知识:

  for循环

    for i in `seq 1 254`;do xxx   done  #循环语句使用for 语句主体do开始 done结束

  seq命令

    seq 1 254  #从1到254依次循环读取

  ping命令

    ping -c 2 ipaddress  #-c表示ping的次数

  条件语句

    if [ x -eq 1];then xx else xx fi #if条件之后使用的是分号,条件语句使用if开始 fi结束

程序主体:

vi ping.sh

#/bin/sh

IPaddr="192.168.1"  #在shell中=前后不要又空格 不然可能报错 变量赋予的值需要双引号引起来

for i in `seq 1 254`

do

    pingtime=`ping -c 2 $IPaddr.$i |grep -i '100% packet lost'|wc -l`

    if [ pingtime -eq 1];then

        echo $IPaddr.$i "  ip未使用">>/opt/down.txt

    else

         echo $IPaddr.$i "  ip正在使用">>/opt/up.txt

    fi

done