Sem problemas,
Preciso editar algumas linhas dentro daquele arquivo (csf.conf) em /etc/csf/.
Hoje preciso criar um script manualmente com as portas que quero liberar e gero aquela linha "sed -i 's/^TCP_IN =.*/TCP_IN = "227,280,9090,10500,57413"/' csf.conf" para substituir a linha existente.
Por exemplo,
Se eu configuro um serviço que utiliza a porta 10, pego as TCP/UDP_IN TCP6/UDP6_IN... , adiciona a porta 10, edito e executo a linha "sed -i 's/^TCP_IN =.*/TCP_IN = "227,280,9090,10500,57413,10"/' csf.conf" Alterando o campo TCP_IN para o protocolo correspondete.
E para remover realizo o mesmo procedimento, somente retirando as portas que de
/etc/csf/csf.conf
...
# Lists of ports in the following comma separated lists can be added using a
# colon (e.g. 30000:35000).
# Allow incoming TCP ports
TCP_IN = "80,10000,33650,33651"
# Allow outgoing TCP ports
TCP_OUT = "1:65535"
# Allow incoming UDP ports
UDP_IN = "33651"
# Allow outgoing UDP ports
# To allow outgoing traceroute add 33434:33523 to this list
UDP_OUT = "1:65535"
# Allow incoming PING
ICMP_IN = "1"
# Set the per IP address incoming ICMP packet rate
# To disable rate limiting set to "0"
ICMP_IN_RATE = "1/s"
# Allow outgoing PING
ICMP_OUT = "1"
# Set the per IP address outgoing ICMP packet rate (hits per second allowed),
# e.g. "1/s"
# To disable rate limiting set to "0"
ICMP_OUT_RATE = "0"
###############################################################################
...
No
exemplo do Paulo, ele consegue inserir a variavel na linha, mas ele seta a linha com os valores a serem pesquisados, como variavel.
On Wednesday, June 25, 2014 9:54 AM, "'Julio C. Neves' address@hidden [shell-script]" <address@hidden> wrote:
Cara que bobeada, eu ia fazer em awk e depois achei melhor fazer em sed. Como já estava com um sono danado, acho que misturei tudo e fiz uma grande besteira e gerei um cruzamento de 'aff maria' com 'cruz credo'.
Pesquisei no arquivo pq foi isso que imaginei que vc queria. O problema é que seu exemplo foi meio incoerente com o que vc está falando. Seu exemplo foi:
sed -i 's/^TCP_IN =.*/TCP_IN = "227,280,9090,10500,57413"/' csf.conf
Por favor explique melhor a que linha vc se refere. O que vc deseja na saída, algumas linhas editadas ou o arquivo /etc/csf.conf editado?
Algumas dicas:
1- A barra vertical dentro de uma expressão regular equivale a um 'ou' lógico então para pesquisar as cadeias que vc citou, pode-se separar as linhas da seguinte maneira:
grep -E '^(TCP_IN|TCP_OUT|UDP_IN|UDP_OUT|TCP6_IN|TCP6_OUT|UDP6_IN|UDP6_OUT)=' /etc/csf.conf
2- Vc tb pode especificar as linhas que deseja alterar, passando o inicio delas por parâmetro, colocando logo no início do script o seguinte:
RegExp=^\($(tr ' ' '|' <<< "$@")\)\ =
Fiz um testezinho no prompt para vc entender:
$ set - TCP_IN TCP_OUT UDP_IN # passando os parâmetros TCP_IN TCP_OUT UDP_IN para o shell do prompt
$ RegExp=^\($(tr ' ' '|' <<< "$@")\)\ = # Gerando a Expressão Regular
$ echo "$RegExp" # Mostrando que ER está pronta para ser usada
^(TCP_IN|TCP_OUT|UDP_IN) =
Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade Local Período
Rio de Janeiro EDX 02 a 06/06
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.
Em 24 de junho de 2014 23:48, Arkan Add
address@hidden [shell-script]
<address@hidden> escreveu:
Julio,
++ sudo grep '\b51211\b' /etc/csf/csf.conf
++ sudo sed -i.veio '/^TCP_IN/; s/$/,51211' /etc/csf/csf.conf
sed: -e _expression_ #1, char 10: unknown command: `;'
++ echo Incluindo porta 51211
Incluindo porta 51211
Houve falha na adiçao da regra. Vi que voce procurou pelo valor no arquivo e não na linha, é possivel procurar somente na linha ou linhas? Eu terei que adicionar esta mesma variavel nas linhas que se iniciam com TCP_IN = , TCP_OUT = , UDP_IN = , UDP_OUT = , TCP6_IN = , TCP6_OUT = , UDP6_IN = , UDP6_OUT = .
Para remover este valor do csf.conf é que creio que esta mais complicado.
Precisara ler o valor das linhas "network port1: , network port2:" dentro do arquivo /etc/$NEWUSER1.info, voltar no /etc/csf/csf.conf e remove-las das linhas TCP_IN = , TCP_OUT = , UDP_IN = , UDP_OUT = , TCP6_IN = , TCP6_OUT = , UDP6_IN = , UDP6_OUT = .
grep "\b$NETWORKPORT1\b" /etc/csf.conf || {
sed -i.veio "/^TCP_IN/; s/$/,$NETWORKPORT1" /etc/csf.conf
echo Incluindo porta $NETWORKPORT1
csf -r
echo /etc/csf.conf está OK
}
Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade Local Período
Rio de Janeiro EDX 02 a 06/06
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.
Em 24 de junho de 2014 22:21,
address@hidden [shell-script]
<address@hidden> escreveu:
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?
- Localizar, procurar e editar com shell-script, arkanadd, 2014/06/24
- Re: [shell-script] Localizar, procurar e editar com shell-script, Julio C. Neves, 2014/06/24
- Re: [shell-script] Localizar, procurar e editar com shell-script, Arkan Add, 2014/06/24
- Re: [shell-script] Localizar, procurar e editar com shell-script, Julio C. Neves, 2014/06/25
- Re: [shell-script] Localizar, procurar e editar com shell-script,
Arkan Add <=
- Re: [shell-script] Localizar, procurar e editar com shell-script, Paulo Bettega, 2014/06/25
- Re: [shell-script] Localizar, procurar e editar com shell-script, Paulo Bettega, 2014/06/27
- RES: [shell-script] Localizar, procurar e editar com shell-script, Felipe S. Costa, 2014/06/27
- Re: RES: [shell-script] Localizar, procurar e editar com shell-script, Paulo Bettega, 2014/06/28
- Re: RES: [shell-script] Localizar, procurar e editar com shell-script, Arkan Add, 2014/06/28
- Re: RES: [shell-script] Localizar, procurar e editar com shell-script, Paulo Bettega, 2014/06/29
- Re: RES: [shell-script] Localizar, procurar e editar com shell-script, Arkan Add, 2014/06/29
- Re: RES: [shell-script] Localizar, procurar e editar com shell-script, Paulo Bettega, 2014/06/30
- Re: RES: [shell-script] Localizar, procurar e editar com shell-script, Arkan Add, 2014/06/30
- Re: [shell-script] Localizar, procurar e editar com shell-script, Luiz Roberto Ferreira, 2014/06/29