ipset não executando a partir do crontab

1

Eu tenho esses arquivos txt que contém IPs, um por linha de arquivo, que eu quero bloquear usando o ipset.

Eu tenho este script bash que essencialmente lê a partir do arquivo txt simples e constrói uma matriz. Em seguida, itera os elementos da matriz e adiciona cada um ao ipset que criei para essa finalidade.

O problema é este: se eu executar o script manualmente a partir do terminal, ele funciona perfeitamente, mas quando eu adiciono o script para executar periodicamente usando o crontab, o script é executado, mas os IPs não são adicionados ao ipset.

Esta é a parte relevante do script.

index=0
while true; do
  ipset -quiet -A myIpset $[arrayOfIPS[$index]}
  index=$[$index + 1]
  if [ "$index" -gt "$lastIndexOfArray" ];
  then break
  fi 
done

Isso funciona perfeitamente no terminal, mas não em uma tarefa crontab. por quê?

    
por SpaceDog 23.02.2013 / 09:53

2 respostas

1

Seu shell sabe onde encontrar executáveis (como ipset ) procurando em seu PATH , que é definido pelo seu ambiente. cron não compartilha o mesmo ambiente. Adicionar isto no topo do crontab (ou seu script) deve dizer onde encontrar comandos como você espera:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
por 23.02.2013 / 10:04
1

Eu sei que a resposta é diferente, mas há uma razão pela qual você não usa os comandos internos?

como isto é crontab

@reboot /usr/sbin/ipset restore -f /ip/ipall.txt

e

ipset save -f /ip/ipall.txt
    
por 07.07.2015 / 00:25