Shell脚本之IP网络地址和广播地址计算

这是一篇旧时习作,Shell脚本练得多了,想练练移位计算,就有了下面的脚本。

#!/bin/bash
IPPattern="(\<([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])\>"
maskPattern="[1-9]|[12][0-9]|3[01]"

while :
do
  echo -e -n "Please input a legal IP address [such as 192.168.1.1/16]: "
  read userInput
  
  IPMask=`echo $userInput | egrep "$IPPattern/$maskPattern"`  
  #Such as 192.168.1.1/24
  if [ -z "$IPMask" ] ;then
    echo "Please input the right format. [such as 192.168.1.1/1-31] "
    continue
  fi
  
  IPAddr=`echo $IPMask | cut -d/ -f1`
  IPType[1]=`echo $IPAddr | cut -d. -f1`
  IPType[2]=`echo $IPAddr | cut -d. -f2`
  IPType[3]=`echo $IPAddr | cut -d. -f3`
  IPType[4]=`echo $IPAddr | cut -d. -f4`
  mask=`echo $IPMask | cut -d/ -f2`
  echo "IP address is ${IPType[1]}*${IPType[2]}*${IPType[3]}*${IPType[4]} , Mask is $mask ."
  
  ((IPHex[1]=IPType[1]<<24))
  ((IPHex[2]=IPType[2]<<16))
  ((IPHex[3]=IPType[3]<<8))
  ((IPHex[4]=IPType[4]))
  
  #192 c0 ; 1 1 1
  ((iph=${IPHex[1]}+${IPHex[2]}+${IPHex[3]}+${IPHex[4]}))
  #echo $iph
  #0xffffffff
  #declare -i strMask1=4294967295
  declare -i strMask1=0xffffffff
  #echo $strMask1
  ((strMask1=strMask1<<(32-mask) & 0xffffffff))
  #echo $strMask1
  ((strMask2=~strMask1))
  #echo $strMask2
  ((networkAddr=iph & strMask1))
  ((bcastAddr= (iph | strMask2) &  0xffffffff))
  #echo $networkAddr | awk ‘{printf "%x\n",$0}‘
  #echo $bcastAddr | awk ‘{printf "%x\n",$0}‘
  
  
  ((IPHex[1]=networkAddr>>24 & 0x000000ff))
  ((IPHex[2]=networkAddr>>16 & 0x000000ff))
  ((IPHex[3]=networkAddr>>8 & 0x000000ff))
  ((IPHex[4]=networkAddr & 0x000000ff))
  echo -e "Network Address   : ${IPHex[1]}.${IPHex[2]}.${IPHex[3]}.${IPHex[4]}"
  
  ((IPHex[1]=bcastAddr>>24 & 0x000000ff))
  ((IPHex[2]=bcastAddr>>16 & 0x000000ff))
  ((IPHex[3]=bcastAddr>>8 & 0x000000ff))
  ((IPHex[4]=bcastAddr & 0x000000ff))
  echo -e "Broadcast Address : ${IPHex[1]}.${IPHex[2]}.${IPHex[3]}.${IPHex[4]}"
done
时间: 2024-11-04 12:15:48

Shell脚本之IP网络地址和广播地址计算的相关文章

Shell脚本判断IP是否合法性

运维角度来说,写shell脚本经常会遇到判断输入的值是否合法,比如IP.邮件地址等.那么,根据自身写脚本中总结的判断IP合法性脚本分享给网友,遇到时能有所参考. 思路:IP由四位数字组成,以点分割,每个字段不能大于255,必须符合这种格式 方法1: function check_ip() {     IP=$1     VALID_CHECK=$(echo $IP|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4

最简单的统计appche站点IP访问量的shell脚本

经常需要根据IP地址统计apache站点访问量,最基本的脚本. 根据IP访问量降序排列: #!/bin/bash #Script_name: access_count acc_log=/usr/local/apache2/logs/access_log /bin/awk '{print $1}' $acc_log  | sort | uniq -c | sort -nr 执行效果: [[email protected] ~]# sh access_count   94989 192.168.10

shell脚本自动加黑恶意攻击IP

shell脚本自动加黑恶意攻击IP 系统环境:Centos 6.5 X64 如果我们对所有用户开放了SSH 22端口,那么我们就可以在/var/log/secure文件里查看,这里面全是恶意攻击的IP ,那么我们又该如何拒绝这些IP在下次攻击时直接把他拉黑,封掉呢? 或者这个IP再试图登陆4次或7次我就把他拒绝了,把他这个IP永久的封掉呢?这个时候我们就可以用这下面这个脚本来实现. [[email protected] ssh]# vi /etc/ssh/blocksship #!/bin/ba

centos分配IP脚本--写的第一个shell脚本

IDC小菜鸟一枚,非科班出身.常常有客户的centos服务器需要分配15个IP甚至30个IP.每次需要手动分配十分麻烦,于是花了一天时间学了shell脚本,写了这个脚本. #!/bin/bash read -p "The IP numbers: " num while [[ $num -gt 0 ]] do read -p "Please enter IP Address :" ipaddr touch /etc/sysconfig/network-scripts/

Shell脚本实现非法IP登陆自动报警【转】

服务器的安全稳定是每个运维都希望达到的目标,毕竟网站一旦流量大了,访问高了,就会有一些无聊人来攻击,帮忙检测漏洞是好,但纯ddos的性质就很恶劣了.说远了,这篇文章只是检测有非法ip登录到服务器上就自动给运维报警,当然也可以改成短信报警,前提是你有短信网关. #!/bin/bash #该脚本作用是检测是否有恶意IP登陆服务器并邮件报警 #可以结合139邮箱以达到短信及时通知到手机的功能 #适用系统centos5 Ldate=`which date` Lawk=`which awk` Llast=

利用shell脚本统计文件中出现次数最多的IP

比如有如下文件test.txt 1  134.102.173.43 2  134.102.173.43 3  134.102.171.42 4  134.102.170.9 要统计出现次数最多的IP可以利用以下shell脚本: cat test.txt | awk '{print $2}' | sort | uniq -c | sort -n -r | head -n 1 [原创]统计IP次数最多的 一条还是很常见,很实用,很简单的命令 netstat -ntu Active Internet

用Shell脚本动态分析maillog日志,把恶意IP用防火墙禁止

用Shell脚本动态分析maillog日志,把恶意IP用防火墙禁止 系统环境:Centos 6.5 x64 Postfix邮件系统装好后,发现maillog中太多"SASL LOGIN authentication failed"垃圾IP地址.此脚本用于定期自动的将垃圾IP加入到防火墙中,直接拒绝掉.maillog部分信息如下 用户可以根据自己日志文件中的关键字,灵活的来调整要加入到防火墙当中的IP地址. Jun 11 03:58:36 host postfix/smtpd[11783

(转自张戈博客)Linux系统防CC攻击自动拉黑IP增强版Shell脚本

(转自张戈博客) 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个问题,但是还是想暂时取消CDN加速和防护来测试下服务器的性能优化及安全防护. 前天写的Shell脚本是加入到crontab计划任务执行的,每5分钟执行一次,今天实际测试了下,可还是可以用的,但是感觉5分钟时间有点过长,无法做到严密防护.于是稍微改进了下代码,现在简单的分享下! 一.

设置IP地址shell脚本

#!/bin/bash A="IPADDR.*" B="NETMASK.*" C="GATEWAY.*" D="DNS1.*" E="/etc/sysconfig/network-scripts/ifcfg-eth1" F="cat $E | sed -n '/BOOTP/p'" if [ ! "$F" = "BOOTPROTO=dhcp" ] t