shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Localizar, procurar e editar com shell-script


From: Paulo Bettega
Subject: Re: [shell-script] Localizar, procurar e editar com shell-script
Date: Tue, 24 Jun 2014 23:33:43 -0300
User-agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.6.0

A minha solução é mais feia que a do Julio, mas gastei um tempo
pensando e testando então vou postar :)

$ linha='TCP_IN = "227,280,9090,10500,57413"'
$ NETWORKPORT1=227
$ exp="^TCP_IN = .*[\",]{1}$NETWORKPORT1[\",]{1}"
$ echo $exp
^TCP_IN = .*[",]{1}227[",]{1}
$ if [[ "$linha" =~ $exp ]]; then
        echo $BASH_REMATCH
        sed "s/$NETWORKPORT1//; s/\",/\"/; s/,,/,/; s/,\"/\"/" <<<"$linha"
else
        sed "s/\"$/,$NETWORKPORT1\"/" <<<"$linha"
fi
TCP_IN = "227,
TCP_IN = "280,9090,10500,57413"


$ NETWORKPORT1=50
$ exp="^TCP_IN = .*[\",]{1}$NETWORKPORT1[\",]{1}"
$ echo $exp
^TCP_IN = .*[",]{1}50[",]{1}
$ if [[ "$linha" =~ $exp ]]; then
        echo $BASH_REMATCH
        sed "s/$NETWORKPORT1//; s/\",/\"/; s/,,/,/; s/,\"/\"/" <<<"$linha"
else
        sed "s/\"$/,$NETWORKPORT1\"/" <<<"$linha"
fi
TCP_IN = "227,280,9090,10500,57413,50"

Se for obrigatório colocar os números em ordem, teria que dar um jeito nisso.

Abraços Paulo Bettega


On 24-06-2014 22:21, address@hidden [shell-script] wrote:
Estou precisando resolver uma questão de manipulação de texto para um projeto 
pessoal de automação
aqui. Basicamente tenho um script que cria usuarios automaticamente e estou 
precisando adicionar uma
função para liberar portas no firewall para os serviços que este script 
habilita.


Utilizo o csf como firewall e consigo refazer toda uma linha com o comando 
abaixo:


sed -i 's/^TCP_IN =.*/TCP_IN = "227,280,9090,10500,57413"/' csf.conf


Os campos que preciso modificar são campos dentros das "".


Por exemplo:


Eu recebo a porta a porta pela variavel $NETWORKPORT1


Supondo que o valor da variavel seja 50, preciso checar se ele existe na linha 
TCP_IN dentro do
/etc/csf.conf, se não existir, adiciona-lo e realizar o refresh de regras executando um 
"csf -r".


Também preciso realizar o contrario, verificar se um valor existe nesta mesma 
linha, remove-lo e
realizar o refresh nas regras.


Qual a melhor forma de realizar tais funçoes?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]