Dúvida num laço de repetição com For [RESOLVIDO]

1. Dúvida num laço de repetição com For [RESOLVIDO]

Filipi Souza
filipi_saci

(usa Linux Mint)

Enviado em 02/12/2015 - 13:33h

Boa tarde pessoal,

Peguei o seguinte script do post:
http://www.vivaolinux.com.br/dica/Liberar-o-WhatsApp-Texto-imagem-audio-video-e-ligacoes-iptables 


#!/bin/bash
wget='/usr/bin/wget'
ipt='/sbin/iptables'
url='https://www.whatsapp.com/cidr.txt'
ipt_target='ACCEPT'
$ipt -N WHATSAPP
$ipt -A FORWARD -j WHATSAPP
$ipt -F WHATSAPP
$ipt -I WHATSAPP -j RETURN
for node in `$wget -q --no-check-certificate -O - $url | sort | uniq`; do $ipt -I WHATSAPP -d $node -p tcp --dport 443 -j $ipt_target
done


Estou com a seguinte dúvida. O que exatamente acontece nessa linha:
for node in `$wget -q --no-check-certificate -O - $url | sort | uniq`;do

Primeira dúvida, o apostrofo está certo?? ou deveria ser '
Segunda dúvida, ao executar o script tenho o seguinte retorno para o parâmetro -q:
iptables v1.4.21: unknown option "-q"
Try `iptables -h' or 'iptables --help' for more information.
Terceira, se eu tiro os parâmetros acaba dando erro nos outros parâmetros, como no --no-check-certificate

Alguém pode me dizer o que faz exatamente a linha do for?

Desde já, agradeço.


  


2. MELHOR RESPOSTA

thinomar
thinomar

(usa Linux Mint)

Enviado em 02/12/2015 - 14:45h

`$wget -q --no-check-certificate -O - $url | sort | uniq` 

$wget é a variável que aponta para o caminho completo do wget:
wget='/usr/bin/wget' 

Os argumentos:
-q: Suprime saídas do comando wget.
--no-check-certificate: Suprime saídas referentes a HTTPS.
-O: imprime o conteúdo do arquivo baixado na tela.
$url: Variável que aponta para URL:
url='https://www.whatsapp.com/cidr.txt' 

|: Redirecionador da saída de um comando.
sort: Organiza texto (ordem alfabética).
uniq: Elimina registros duplicados.

E o acento grave (crase `) serve para dar prioridade de execução para o código dentro dela.

Sobre o for: o resultado do wget está sendo jogado, linha a linha, na variável node. Cada linha é um looping e o for executará até que chegue na última linha do arquivo baixado.

Sobre o comando dentro do for:
$ipt: Variável que contém caminho do iptables, que foi declarado no inicio do script.
-I WHATSAPP: Inserção na chain WHATSAPP
-d $node: Aplicar regra ao destino contido na variável node, que recebe conteúdo no laço.
-p tcp --dport 443: O que estiver no protocolo TCP e porta 443
-j $ipt_target: Decisão a se tomar (a variável está com o valor ACCEPT, como visto no inicio do código, o que significa que esse looping está liberando as transações de rede do WhatsApp)
--
-I've been talking to the main computer
-And...?
-It hates me





Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts