簡單的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 21:07
下一篇 2017-03-20 14:41

相關推薦

  • N26-第一周

    描述計算機的組成及功能。 計算機主要由運算器,控制器,存儲器,輸入、輸出設備五大部件組成 運算器(Arithmetic Logic Unit, ALU):實現各種算數運算和邏輯運算(與控制器組成cpu)。 控制器(Control Unit, CU):計算機控制中心,根據程序規定的控制程序進行解釋,根據要求進行調度,控 制協調各部分有條不紊的運行。 存儲器(M…

    Linux干貨 2017-02-03
  • 高可用+LVS-NAT

    關鍵:floating VIP 要以組為單位同時切換 實驗1: 主備VRRP 切換實驗 預期: 設定配置文件: A主機 (172.18.48.61) vrrp_sync_group VG1 { group { outside_network inside_network } } vrrp_instance outside_network { state MA…

    2017-05-14
  • 第10周作業(上)

    第10周作業 1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)。CentOS系統啟動詳細的過程如下(以CentOS7為例): 加電自檢(POST)按下電源開關,BIOS系統隨即開始加電自檢,檢查CPU、內存、主板及各接口、硬盤、鍵盤、光驅等,檢測它們的好壞。 讀取啟動順序檢查完成后,BIOS會根據預先設定好的啟動順序去挨個尋找可引導…

    Linux干貨 2017-01-03
  • N26_第二周作業

    一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理命令:cp,mv,rm 1、cp命令 功能說明:復制copy語法格式:        單源復制:  cp [OPTION]… [-T] SOURCE DEST  …

    Linux干貨 2017-02-21
  • bash腳本編程實例

    bash腳本編程實例 1.寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態 在線的主機使用綠色顯示 不在線的主機使用紅色顯示 #!/bin/bash for i in {1..254};do if /bin/ping -W 1 -c 1 172.16.250.${i} >> /dev/…

    Linux干貨 2017-08-20
  • 日志SYSLOGD_OPTIONS 參數

    SYSLOGD_OPTIONS 參數

    Linux干貨 2018-03-26
欧美性久久久久