[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Mascara + Rede
From: |
Flavio Junior |
Subject: |
Re: [shell-script] Mascara + Rede |
Date: |
Mon, 10 Dec 2007 19:43:17 -0200 |
Nao enetndi bem o que fez..
Uma alternativa:
lazlo:~# VAR=( $(ifconfig eth0 | awk '/inet addr:/{gsub(/[A-z ]+:/,"
"); print}') )
lazlo:~# echo ${VAR[@]} # Coloquei IP, Broadcast e Mascara em um array
192.168.4.4 192.168.4.255 255.255.255.0
lazlo:~# for var in ${VAR[@]}; do echo "obase=2; ${var//./;}" | bc -l
| paste -sd.; done
11000000.10101000.100.100
11000000.10101000.100.11111111
11111111.11111111.11111111.0
lazlo:~#
--
Flávio do Carmo Júnior
On Dec 10, 2007 5:00 PM, Fábio Gomes <address@hidden> wrote:
>
>
>
>
>
>
> Flavio Junior wrote:
> >
> > Pega os 4 campos do IP e faz:
> >
> > $ echo "obase=2;$CAMPO" | bc -l
> >
> > sem mto tempo..
> >
> > --
> >
> > Flavio do Carmo Junior
> >
> > On Dec 10, 2007 2:09 PM, Fábio Gomes <address@hidden
> > <mailto:fabio%40uniconet.com.br>> wrote:
> > >
> > >
> > >
> > >
> > >
> > >
> > > Boa tarde lista,
> > >
> > > Alguem sabe alguma função que me retorne a rede em binario, eu
> > > informando ip e a mascara?
> > >
> > > Eu estou usando...
> > >
> > > IP_IF2=$(/sbin/ifconfig ${IF_LINK2} | awk '/inet addr:/ {print $2}' |
> > > cut -d: -f2)
> > > MASK_IF2=$(/sbin/ifconfig ${IF_LINK2} | awk '/inet addr:/ {print $4}' |
> > > cut -d: -f2)
> > > REDE2=$(ipmask $MASK_IF2 $IP_IF2 | cut -f2 -d" ")
> > >
> > > Mas preciso que seja em binario, preciso saber se eh /24, /18, etc...
> > >
> > > Obrigado
> > >
> > > Fábio Gomes dos Santos
> > >
> >
> >
>
> Segue o resultado ae...
>
> Quem quiser incrementar fique avontade :D
>
> #!/bin/bash
> if_link=$1
> if [ "${if_link}" == "" ]; then
> echo "Use $0 ethX
> exemplo: $0 eth0"
> exit 1
> fi
> ip_if=$(/sbin/ifconfig ${if_link} | awk '/inet addr:/ {print $2}' | cut
> -d: -f2)
> mask_if=$(/sbin/ifconfig ${if_link} | awk '/inet addr:/ {print $4}' |
> cut -d: -f2)
> rede=$(ipmask $mask_if $ip_if | cut -f2 -d" ")
> IFS="."
> mask_bin=0
> for i in $mask_if
> do
> case $i in
> 0)
> mask_bin=`expr $(($mask_bin+0))`
> ;;
> 128)
> mask_bin=`expr $(($mask_bin+1))`
> ;;
> 192)
> mask_bin=`expr $(($mask_bin+2))`
> ;;
> 224)
> mask_bin=`expr $(($mask_bin+3))`
> ;;
> 240)
> mask_bin=`expr $(($mask_bin+4))`
> ;;
> 248)
> mask_bin=`expr $(($mask_bin+5))`
> ;;
> 252)
> mask_bin=`expr $(($mask_bin+6))`
> ;;
> 254)
> mask_bin=`expr $(($mask_bin+7))`
> ;;
> 255)
> mask_bin=`expr $(($mask_bin+8))`
> ;;
> esac
> done
> IFS=" "
> echo ${rede}/${mask_bin}
>
>