Problema com case [RESOLVIDO]

1. Problema com case [RESOLVIDO]

Luis Eduardo Vilella
luivilella

(usa Debian)

Enviado em 12/07/2012 - 18:00h

Pessoal tenho um case no meu shell que não sei o porque não esta entrando na condicional.
Na função _changeMask deveria trocar a mascara mais não esta trocando alguém pode me ajudar.

Script:

#!/bin/bash
# package    http://sekysu.blogspot.com
#
# Makes iptables rules usings the /etc/dhcp/dhcp.conf file
# file       MkIptblFromDhcpConf.sh
#
# charset    UTF-8
# endofline  Linux
# since      2012-26-06 23:58 (GMT -03:00)
# license    GPL v2.0
#
# system     GNU bash, version 3.1.17(2)-release i486 slackware 12.2
# autor      Paulo Riceli (./.ronin)  [ http://sekysu.blogspot.com  ]
# autor      Luis Vilella (luivilella)[http://www.vivaolinux.com.br/perfil/verPerfil.php?login=luivilella]
# more       http://sekysu.blogspot.com

typeset -r _INPUT_ARQ='/etc/scripts/aux/dhcpd.conf'
typeset -r _RULES='/tmp/rules.sh'
typeset -r _START_RULE='iptables -A INPUT -s'
typeset -r _ACCEPT_END_RULE='-j ACCEPT'
typeset -r _REJECT_END_RULE='-j REJECT'

function _getSubnet()
{
   _DELIM='subnet'
   grep -e ${_DELIM} ${_INPUT_ARQ} |
   sed "s/${_DELIM}/_/g" |
   cut -d '_' -f2 |
   sed 's/ /_/g' |
   cut -d '_' -f2
}

function _getMaskSubnet()
{
   _DELIM='netmask'
   grep -e ${_DELIM} ${_INPUT_ARQ} |
   sed "s/${_DELIM}/_/g" |
   cut -d '_' -f2 |
   sed 's/ /_/g' |
   cut -d '_' -f2
}

function _getIp()
{
   _DELIM='fixed-address'
   grep -e ${_DELIM} ${_INPUT_ARQ} |
   sed "s/${_DELIM}/_/g" |
   sed 's/;/_/g' |
   cut -d '_' -f2 |
   sed 's/ //g'
}

function _getRejectList(){

    _INDICE=0
    for _CONTEUDO in $(_getMaskSubnet)
    do
        _MASK[${_INDICE}]=${_CONTEUDO}
        _changeMask
        _INDICE=`echo "(${_INDICE} + 1)" | bc`
    done
    unset _CONTEUDO

    _INDICE=0
    for _CONTEUDO in $(_getSubnet)
    do
        _SUBNET[${_INDICE}]=${_CONTEUDO}
        _INDICE=`echo "(${_INDICE} + 1)" | bc`
    done
    unset _CONTEUDO

    for ((i=0; i < ${_INDICE} ; i++))
    do
        echo -e "\n${_SUBNET[${i}]}/${_MASK[${i}]}"
    done
    unset _INDICE
    unset i
#    echo "$(_getSubnet) $(_getMaskSubnet)"
}

function _changeMask()
{
    case "`echo ${_MASK[${_INDICE}]} | sed 's/ //g' | sed 's/\.//g'`" in
        "`echo "128.0.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='1';;
        "`echo "192.0.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='2';;
        "`echo "224.0.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='3';;
        "`echo "240.0.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='4';;
        "`echo "248.0.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='5';;
        "`echo "252.0.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='6';;
        "`echo "254.0.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='7';;
        "`echo "255.0.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='8';;
        "`echo "255.128.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='9';;
        "`echo "255.192.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='10';;
        "`echo "255.224.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='11';;
        "`echo "255.240.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='12';;
        "`echo "255.248.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='13';;
        "`echo "255.252.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='14';;
        "`echo "255.254.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='15';;
        "`echo "255.255.0.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='16';;
        "`echo "255.255.128.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='17';;
        "`echo "255.255.192.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='18';;
        "`echo "255.255.224.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='19';;
        "`echo "255.255.240.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='20';;
        "`echo "255.255.248.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='21';;
        "`echo "255.255.252.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='22';;
        "`echo "255.255.254.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='23';;
        "`echo "255.255.255.0" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='24';;
        "`echo "255.255.255.128" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='25';;
        "`echo "255.255.255.192" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='26';;
        "`echo "255.255.255.224" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='27';;
        "`echo "255.255.255.240" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='28';;
        "`echo "255.255.255.248" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='29';;
        "`echo "255.255.255.252" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='30';;
        "`echo "255.255.255.254" | sed 's/\.//g'`" )
             _MASK[${_INDICE}]='31';;
        * );;
    esac
}

function _getAcceptRules()
{
   for _IP_RANGE in $(_getIp)
   do
       echo "${_START_RULE} ${_IP_RANGE} ${_ACCEPT_END_RULE}"
   done
}

function _getRejectRules()
{
   unset _IP_RANGE
   for _IP_RANGE in $( _getRejectList )
   do
       echo "${_START_RULE} ${_IP_RANGE} ${_REJECT_END_RULE}"
   done
}

function _execute()
{
   _getAcceptRules > ${_RULES}
   _getRejectRules >> ${_RULES}
   #echo -e "\n $0 \n The rules list from \n ${_RULES}\n"
   cat ${_RULES}
}

function _main()
{
   if [ -e ${_INPUT_ARQ} ]
   then
      _execute
   else
      echo -e "$0::Input error \nThe file ${_INPUT_ARQ} not exists"
      exit 1
   fi
}

_main &&
exit 0
 


Arquivo de Entrada:

#dhcp3-server
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;

#definindo a rede que o dhcp ira funcionar
subnet 10.1.1.0 netmask 255.255.255.0
{
    range 10.1.1.100 10.1.1.252;
    option routers 10.1.1.98;
    option domain-name-servers 208.67.222.222
                              ,208.67.220.220
                              ,67.138.54.100
                              ,207.225.209.66
                              ,156.154.70.1
                              ,156.154.71.1
                              ,8.8.8.8
                              ,8.8.4.4;
    option broadcast-address 10.1.1.255;

    host xxxxxxxxx
    {
        hardware ethernet ac:72:89:09:a4:11;
        fixed-address 10.1.1.111;
    }

    host xxxxxxxxx
    {
        hardware ethernet 4c:ed:de:74:be:ff;
        fixed-address 10.1.1.209;
    }
    host xxxxxxxxx
    {
        hardware ethernet b4:74:9f:9c:64:f8;
        fixed-address 10.1.1.215;
    }
    host xxxxxxxxx
    {
        hardware ethernet b4:82:fe:0a:4b:55;
        fixed-address 10.1.1.248;
    }
    .........
 



  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 12/07/2012 - 23:14h

Já execute com bash -x nome_script para ver se facilitar encontrar o problema? Não fiz aqui, pois existem comandos que vão afetar o meu sistema...

3. Re: Problema com case [RESOLVIDO]

Luis Eduardo Vilella
luivilella

(usa Debian)

Enviado em 13/07/2012 - 19:20h

Vish... Mestre rai3mb top esse bash -x
Achei o porque não entra estava com um \r..







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts