A minha necessidade era atraves de um painel de controle (escrito em PHP) executar um comando especifico (neste caso: csf -dr IP). O procedimento poderia ser simples, usando o exec() do PHP, mas por medidas de segurança o mesmo esta desabilitado no servidor.
Como diz meu grande ídolo Dadá Maravilha, vamos a solucionática: Fazer um Shell Script que le um arquivo TXT linha por linha, onde serão gravados os IPs e executar o comando com estes IPs.
Segue o código:
#!/bin/bash
# DesBloquearIPTxt por Diogo Dourado
# Le IPs para desbloquear
nome_arquivo="/home/betanetr/public_html/DesbloquearIps.txt"
if [ -f $nome_arquivo ]
then
while read line
do
ipvalido=$(echo $line | egrep '^(([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$')
if [ "$ipvalido" != "" ]; then
csf -dr $line
fi
done < $nome_arquivo
echo '' > $nome_arquivo
fi
Vamos botar pra rodar?
- Entre no seu servidor via SSH
- Crie um arquivo com o código acima atraves do comando: edit DesBloquearIPTxt
- Faça dele um executavel com o comando: chmod +x DesBloquearIPTxt
- Abra o agendador de tarefas: crontab -e
- Adicione na ultima linha: * * * * * ./DesBloquearIPTxt >/dev/null 2>&1
- Salve e seja feliz! :)
Avisos importantes:
- Altere o nome do arquivo no código acima para o caminho exato de onde esta o arquivo, no meu caso, com os IPs gravados: DesbloquearIps.txt”
- De permissão 0777 para este arquivo, mesmo vazio
- Agora é so fazer um script em PHP para gravar os IPs que deseja desbloquear no TXT
Prontinho, agora o CRON cuida do resto. A cada minuto ele verifica se o arquivo existe, se existir, verifica linha por linha se é um IP válido, se for o IP válido ele faz o desbloqueio do IP.
Have Fun! ;)
1 comment
muito bom o script, agora gostaria de saber como seria fazer esse ai em php, tipo aparte de criar o painel eu faria queria somente o script para liberar o ip com php tem como disponibilizar o script?