É sed a maneira de extrair um número que se torne parte de uma linha de comando sendo construída?

1

Em /etc/knockd.conf eu quero um comando que será um comando ufw insert [line number]... , o número da linha é dinâmico e pode ser obtido ao encontrar a primeira ocorrência de ALLOW na saída do comando ufw status numbered . Eu cheguei até aqui

ufw status numbered|sed -n '/ALLOW/p'|sed q|sed 's/].*//'|sed 's/\(\[\)//g'

que produz o número de que preciso. Esse número precisará se tornar uma parte intermediária do comando ufw insert , para dinamicamente (virtualmente) produzir este comando:

ufw insert 5 allow from %IP% to any; ufw reload

O 5 acima é o número da linha de exemplo da primeira linha ALLOW na saída de status ufw. O %IP% está literalmente no comando virtual desejado.

Então, eu acho que a linha de comando começaria com o comando ufw status e sed, que produz o número da linha, e de alguma forma constrói o comando virtual e atribui o número a ele. Não esqueça que o comando virtual termina com o comando ufw reload.

Tudo isto faz parte de um sistema de vigilância em casa, um servidor headless rodando o Ubuntu 15.04. Eu escolhi knockd porque os fabricantes de blacklists de firewall que eu vi não pegaram e colocaram o perp na lista negra na primeira sonda. Com o knockd, posso definir uma regra /etc/knockd.conf para colocar na lista negra o IP de um perp baseado em um único hit em minha porta 22, 80, 443, o que eu quiser. Minhas regras do ufw têm três seções:

  1. Denys de IPs únicos de perps na lista negra (criando-se através de um comando ufw insert 1 deny from %IP% to any; ufw reload em /etc/knockd.conf ),
  2. Permite IPs únicos de aldravas bem sucedidas (eu dos meus locais, este é o comando que eu preciso de ajuda porque tem que ser inserido na linha calculada dinamicamente após os perps na lista negra),
  3. dois denys estáticos que cobrem o mundo.
por kenneth558 17.09.2015 / 00:35

1 resposta

1

Tente isto:

ufw insert $(sed -n '/ALLOW/{s/^.*ALLOW *\[ *\([0-9]\+\).*$//;p;q}' <(ufw status numbered)) allow from '%IP%' to any; ufw reload
    
por CrazyApe84 17.09.2015 / 01:58