[Fedora-users-br] mais uma da serie Dicas

Fabio Aragao duvidaslinux em yahoo.com.br
Domingo Maio 20 01:01:10 UTC 2007


Esta quem mandou foi o Alessandro Dias

Script que calcula os End.Rede e Broadcast


#!/bin/bash

function dec2bin() { echo "obase=2;$1" | bc -l }

function bin2dec() { echo "$((2#$1))" }

addr=`echo $1 | cut -d "/" -f 1`
mask=`echo $1 | cut -d "/" -f 2`
mask_BIN=$(echo 1|sed "/^1\{$mask\}$/bb;:a
s/^1\{1,$(($mask-1))\}$/&1/;ta;:b;s/^[01]\{1,31\}$/&0/;tb;s/[01]\{8\}/&./g;s/\.$//")

for i in 1 2 3 4; do 
   eval ip$i=$(dec2bin $(echo $addr | cut -d'.' -f $i)
| sed ':a;s/^[01]\{1,7\}$/0&/;ta')
   eval nm$i=$(echo $mask_BIN | cut -d'.' -f $i)
done

echo "Entrada    : "$addr"/"$mask
echo "End.IP(2)  : "$ip1"."$ip2"."$ip3"."$ip4
echo "Mascara(2) : "$mask_BIN

nm_d="${nm1//0}${nm2//0}${nm3//0}${nm4//0}"
echo "End. IP    : $addr" 
echo "Mascara    :
$((2#$nm1)).$((2#$nm2)).$((2#$nm3)).$((2#$nm4)) =
${#nm_d}"
net=$((((2#$ip1$ip2$ip3$ip4)) &
((2#$nm1$nm2$nm3$nm4))))
i=$(echo $nm1$nm2$nm3$nm4 | sed 's/1/2/g;s/0/1/g' |
sed 's/2/0/g')
bcast=$(($net | ((2#$i))))
addr=""; for i in 1 2 3 4; do ip1=$((net & 255))
net=$((net >> 8))
addr="${ip1}.$addr"; done; echo "Rede       :
${addr%.} / ${#nm_d}"
addr=""; for i in 1 2 3 4; do ip1=$((bcast & 255))
bcast=$((bcast >> 8))
addr="${ip1}.$addr"; done; echo "Broadcast  :
${addr%.}"


Espero ter ajudado

__________________________________________________
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 




Mais detalhes sobre a lista de discussão br-users