As tarefas Cron são executadas em um ambiente shell que pode ser diferente do que o seu ambiente shell interativo comum. Por exemplo, a variável PATH
pode ter uma lista de diretórios diferentes e pode não ter alguns diretórios dos quais você está acostumado a executar utilitários.
Descobrir onde o utilitário ufw
está localizado (usando command -v ufw
na linha de comando) e, em seguida,
- use o caminho completo para esse utilitário no script ou
- modifique a variável
PATH
dentro do script para incluir o diretório no qual oufw
utility (eiptables
) pode ser encontrado.
O script, como mostrado na pergunta, não possui uma #!
-line adequada. Isso não é um problema se você executar com sh
explicitamente, mas você não faz isso na especificação da tarefa cron. Em vez disso, torne o script executável e, em seguida, escreva-o como
#!/bin/sh
PATH="$PATH:/usr/sbin:/sbin"
ufw allow 27017 && iptables -F
Em seguida, chame o script do seu crontab exatamente como você está fazendo atualmente.
Aqui, também adicionei os dois diretórios /usr/sbin
e /sbin
à variável PATH
, apenas para mostrar como alguém pode fazer isso no script.