Enviado em 25/06/2012 - 17:48h
Estou brincando um pouco aqui o Shell e estou com um problema, tenho uma saída que não esta saindo formatada.rm -rf /etc/scripts/aux/ mkdir /etc/scripts/aux/ cp /etc/dhcp/dhcpd.conf /etc/scripts/aux/dhcpd.conf arquivoEntrada="/etc/scripts/aux/dhcpd.conf" arquivoAux1="/etc/scripts/aux/arquivoAuxiliar1" arquivoAux2="/etc/scripts/aux/arquivoAuxiliar2" arquivoAux3="/etc/scripts/aux/arquivoAuxiliar3" arquivoAux4="/etc/scripts/aux/arquivoAuxiliar4" #rm $arquivoAux1 #rm $arquivoAux2 #rm $arquivoAux3 #rm $arquivoAux4 arquivoSaidaSUBNET=$arquivoAux1 arquivoSaidaMaskSUBNET=$arquivoAux2 arquivoSaidaIP=$arquivoAux3 arquivoSaidaListaDeRegras=$arquivoAux4 delimitador="subnet" grep -e $delimitador $arquivoEntrada | sed "s/$delimitador/_/g" | cut -d"_" -f2 | sed "s/ /_/g" | cut -d"_" -f2 > $arquivoSaidaSUBNET delimitador="netmask" grep -e $delimitador $arquivoEntrada | sed "s/$delimitador/_/g" | cut -d"_" -f2 | sed "s/ /_/g" | cut -d"_" -f2 > $arquivoSaidaMaskSUBNET delimitador="fixed-address" grep -e $delimitador $arquivoEntrada | sed "s/$delimitador/_/g" | sed "s/;/_/g" | cut -d"_" -f2 | sed "s/ //g" > $arquivoSaidaIP for aux in `cat $arquivoSaidaIP` do echo "iptables -A INPUT -s " `echo $aux` " -j ACCEPT" >> $arquivoSaidaListaDeRegras done aux="" for aux in `paste -d"/" $arquivoSaidaSUBNET $arquivoSaidaMaskSUBNET` do echo "iptables -A INPUT -s " `echo $aux` " -j REJECT" >> $arquivoSaidaListaDeRegras done #tail $arquivoSaidaSUBNET #tail $arquivoSaidaMaskSUBNET #tail $arquivoSaidaIP cat $arquivoSaidaListaDeRegras
for aux in `cat $arquivoSaidaIP` do echo "iptables -A INPUT -s " `echo $aux` " -j ACCEPT" >> $arquivoSaidaListaDeRegras done
iptables -A INPUT -s 10.1.1.111 -j ACCEPT iptables -A INPUT -s 10.1.1.209 -j ACCEPT iptables -A INPUT -s 10.1.1.215 -j ACCEPT iptables -A INPUT -s 10.1.1.248 -j ACCEPT
for aux in `paste -d"/" $arquivoSaidaSUBNET $arquivoSaidaMaskSUBNET` do echo "iptables -A INPUT -s " `echo $aux` " -j REJECT" >> $arquivoSaidaListaDeRegras done
-j REJECT INPUT -s 10.1.1.0/255.255.255.0
Enviado em 25/06/2012 - 17:58h
Tente assim:echo "iptables -A INPUT -s "$(echo $aux)" -j REJECT" >> $arquivoSaidaListaDeRegras
Enviado em 25/06/2012 - 18:10h
Vou testar aqui já retorno.. porem a questa dos 24 Bytes fica complicado pois eu preciso saber a mascara tipo 255.255.255.0 = 24, mais eu quero deixar algo que funcione para todos os casos.Enviado em 25/06/2012 - 18:13h
Testei aqui.. nada ainda.echo "iptables -A INPUT -s "$(echo $aux)" -j REJECT" >> $arquivoSaidaListaDeRegras
-j REJECTA INPUT -s 10.1.1.0/255.255.255.0
Enviado em 25/06/2012 - 18:22h
olhando o script vi que a variável já está com conteúdo, então não precisa ecoar em um sub-shell, vê se funciona como está abaixo:echo "iptables -A INPUT -s "$aux" -j REJECT" >> $arquivoSaidaListaDeRegras
echo iptables -A INPUT -s "$aux" -j REJECT >> $arquivoSaidaListaDeRegras
Enviado em 25/06/2012 - 19:28h
Então referente ao sub-shell é que eu estava fazendo outras coisas com o valor da variável.-j REJECTA INPUT -s 10.1.1.0/255.255.255.0 -j REJECTA INPUT -s 10.1.1.0/255.255.255.0
echo " abcdef "$aux" ghij"
ghijef 10.1.1.0/255.255.255.0
Enviado em 25/06/2012 - 20:06h
Efetuei mais alguns testes demonstra a saída acima com mais visualização.echo "iptables -A INPUT -s " $aux echo "iptables -A INPUT -s " $aux " " echo "iptables -A INPUT -s " $aux " "
iptables -A INPUT -s 10.1.1.0/255.255.255.0 tables -A INPUT -s 10.1.1.0/255.255.255.0 ables -A INPUT -s 10.1.1.0/255.255.255.0
iptables -A INPUT -s iptables -A INPUT -s iptables -A INPUT -s tables -A INPUT -s iptables -A INPUT -s ables -A INPUT -s
Enviado em 25/06/2012 - 20:27h
sim sim segui os dois testes os quais você passou.echo iptables -A INPUT -s "$aux" echo iptables -A INPUT -s "$aux" T echo iptables -A INPUT -s "$aux" TT
iptables -A INPUT -s 10.1.1.0/255.255.255.0 Ttables -A INPUT -s 10.1.1.0/255.255.255.0 TTables -A INPUT -s 10.1.1.0/255.255.255.0
Enviado em 26/06/2012 - 07:46h
# escape especial chars? echo "iptables -A INPUT -s \"${AUX}\" -j REJECT" echo 'iptables -A INPUT -s '${AUX}' -j REJECT'
Enviado em 26/06/2012 - 13:31h
# escape especial chars? echo "iptables -A INPUT -s \"${AUX}\" -j REJECT" echo 'iptables -A INPUT -s '${AUX}' -j REJECT'
#dhcp3-server ddns-update-style none; default-lease-time 600; max-lease-time 7200; authoritative; 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 PC1 { hardware ethernet ac:72:89:09:a4:11; fixed-address 10.1.1.111; } host PC2 { hardware ethernet 4c:ed:de:74:be:ff; fixed-address 10.1.1.209; } host PC3 { hardware ethernet b4:74:9f:9c:64:f8; fixed-address 10.1.1.215; }
Enviado em 27/06/2012 - 01:31h
A versão original rodou sem problemas em meu sistema. O resultado foi:iptables -A INPUT -s 10.1.1.0/255.255.255.0 -j REJECT
arquivoSaidaSUBNET=$arquivoAux1 arquivoSaidaMaskSUBNET=$arquivoAux2 arquivoSaidaIP=$arquivoAux3 arquivoSaidaListaDeRegras=$arquivoAux4 _INICIO_REGRA='iptables -A INPUT -s' _ACCEPT_FIM_REGRA='-j ACCEPT' _REJECT_FIM_REGRA='-j REJECT' function _setSubnet() { delimitador='subnet' grep -e $delimitador $arquivoEntrada | sed "s/$delimitador/_/g" | cut -d '_' -f2 | sed 's/ /_/g' | cut -d '_' -f2 } > $arquivoSaidaSUBNET function _setMaskSubnet() { delimitador='netmask' grep -e $delimitador $arquivoEntrada | sed "s/$delimitador/_/g" | cut -d '_' -f2 | sed 's/ /_/g' | cut -d '_' -f2 } > $arquivoSaidaMaskSUBNET function _setIp() { delimitador='fixed-address' grep -e $delimitador $arquivoEntrada | sed "s/$delimitador/_/g" | sed 's/;/_/g' | cut -d '_' -f2 | sed 's/ //g' } > $arquivoSaidaIP function _getRejectList() { paste -d '/' $arquivoSaidaSUBNET $arquivoSaidaMaskSUBNET } function _setAcceptRules() { while read _IP_RANGE do echo "${_INICIO_REGRA} ${_IP_RANGE} ${_ACCEPT_FIM_REGRA}" done < $arquivoSaidaIP } > $arquivoSaidaListaDeRegras function _setRejectRules() { unset _IP_RANGE for _IP_RANGE in $( _getRejectList ) do echo "${_INICIO_REGRA} ${_IP_RANGE} ${_REJECT_FIM_REGRA}" done } >> $arquivoSaidaListaDeRegras function _getDebug() { echo -e "\nDebug$0\nSubnet" cat $arquivoSaidaSUBNET echo -e "\nMaskSubnet" cat $arquivoSaidaMaskSUBNET echo -e "\nIP" cat $arquivoSaidaIP echo -e "\nLista de regras" cat $arquivoSaidaListaDeRegras } _setSubnet _setMaskSubnet _setIp _setAcceptRules _setRejectRules DBG=$1 if [ $DBG == '-d' ] then _getDebug fi
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
Ocomon 6.0.1 - Problemas ao editar configurações estendidas (7)
instalar o Linux em computadores Acer novos (7)
Será possível instalar Linux Mint LMDE em Sony Vaio? (19)
O livro "Linux - Guia do Administrador do Sistema (Rubem E. Ferre... (1)