簡單的shell腳本第二版

經過各位老板的指點我修改了部分內容使其更加完善        原文鏈接  http://www.www58058.com/70381

/bin/bash
declare -i Inet
declare -i Snet
[[ $1 =~ ((2[0-4][0-9]|25[0-5]|1?[0-9]?[0-9])\.){3}(2[0-4][0-9]|25[0-5]|1?[0-9]?[0-9])\/(2[4-9]|3[0-2]) ]]  #正則表達式驗證是否為正確格式
if [ $? -ne 0 ] ;then                               #判斷格式是否配正確匹配
{
echo ” Usage:$0 172.18.0.0/24-32.”              #如果格式未被正確匹配返回250狀態碼,并提示使用方法
exit 250
}
fi
Inet=`echo “$1″ | cut -d”.” -f4 | cut -d”/” -f1`   #獲取Ip地址位
Iseg=`echo “$1″ | cut -d”/” -f2`                   #獲取子網掩碼位
Ipv4=`echo “$1″ | cut -d”.” -f1,2,3`               #獲取主機位
let Smask=32-$Iseg                                   #計算子網掩碼反掩碼位數
Sips=$[2**$Smask]                                   #計算出指定網絡的IP數
Snet=$[ $Inet + $Sips -1 ]                           #從指定主機數到輸出的主機個數
[ $Snet -gt 255 ] && Sips=$[ 256 – $Inet ] && Shosts=255 || Shosts=$[ $Inet + $Sips -1 ]
echo “反向子網掩碼位為:$Smask”                     #輸出反掩碼位數
echo “要查找的地址數為:$Sips”                       #輸出主機個數
echo “子網掩碼的位數為:$Iseg”                       #輸出子網掩碼
echo “Ipv4的首個地址為:${Ipv4}.$Inet” #輸出網絡地址位
echo “查看的網段地址為:${Ipv4}.${Inet}-${Ipv4}.${Shosts}” #輸出匹配的網絡位
if [ $Snet -gt 255 ] ;then                           #當地址數溢出時的補救措施    
{
Snet=255                                        #主機數強制為255個
}
fi
for i in `seq $Inet $Snet`;                         #for循環從指定主機開始到指定網段結束的IP個數
do

ping -c1 -W1 $Ipv4.$i >/dev/null 2>&1  && echo -e  “\033[32m$Ipv4.$i is \tup \033[0m” || echo -e  “$Ipv4.$i is\033[31m \tdown \033[0m”
read  -dq -s -t 1 wode && exit                        #read接受到用戶輸入的q后終止循環并退出腳本
#ping 判斷主機是在線還是 不在線
done
unset Inet Iseq Ipv4 wjy  Smask Sips Snet  wode         #釋放上邊使用到的變量


上個版本最大的問題是  只要腳本開始就無法終止腳本  現在按q鍵可以快退出腳本

正則表達式匹配也不規范  顯示的網段和主機個數也有問題

這個腳本適合用子網掩碼進行劃分過的網絡  可以指定任意網段的以子網掩碼進行劃分的主機


原創文章,作者:wode,如若轉載,請注明出處:http://www.www58058.com/71409

(0)
wodewode
上一篇 2017-03-19
下一篇 2017-03-20

相關推薦

  • 日志管理

    日志管理學習筆記

    2018-02-08
  • 編譯安裝Linux內核

    實驗前準備:在https://www.kernel.org/下載內核 這里我們下載的是:linux-4.14.10.tar.xz du -sh /app/linux.tar/ 此命令可查看內核文件大小 編譯完成后/lib/modules下會生成4.14.10版的內核 1,tar xvf linux-4.14.10.tar.xz -C /app/解壓縮準備好的…

    2018-01-03
  • shell編程2

    組合測試條件  第一種方式:        COMMAND1 && COMMAND2 并且        COMMAND1 || COMMAND2 或者        ! COMMAND 非   &nbs…

    Linux干貨 2016-08-21
  • iptables歸納總結

    先簡單介紹下iptables IPTABLES的幾點概念  1、容器:包含或者說屬于的關系  2、Netfilter/iptables是表的容器,iptables包含的各個表 (filter,NAT,MANGLE,RAW)  3、iptables的表tables又是鏈的容器 鏈chains:INPUT,OUTPUT,FORWAR…

    Linux干貨 2017-05-02
  • Linux下搭建路由器

    客戶端1:CentOS6.9 客戶端2:CentOS7.3 路由器:router1(CentOS7.3)、router2(CentOS7.3) r router3(CentOS7.3) 1 準備工作 為了避免干擾,最好建立獨立的網絡。 打開VMvare的虛擬網絡編輯器,點擊添加網絡按鈕,添加VMnet11并且將左下角使用“本地DHCP服務將IP地址分配給虛擬…

    Linux干貨 2017-08-20
  • LVM基本應用,擴展以及縮減的實現

    這是一篇馬哥課堂博客作業,這次換個表現方式寫,前面先寫總體的操作過程,后面顯示詳情 其實馬哥視頻講的非常詳盡,聽起來特別容易理解,只是讓我要寫出來那得費九牛二虎之力,估計還得照著視頻寫。如下僅是看過視頻之后的一個操作過程,比較粗糙,僅僅是作業。。。 LVM:logical volume manager version2 邏輯卷管理系統 PV:physical…

    Linux干貨 2016-06-28
欧美性久久久久