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.$ddate +%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