Solução/Backup para erros com redireccionamentos dinâmicos (no-ip/dydns)

20 views
Skip to first unread message

Eduardo Oliveira

unread,
Jul 12, 2013, 7:53:49 AM7/12/13
to pplwar...@googlegroups.com
Boas,
Ontem tive uma serie de problemas com o servidor onde trabalho pois o router/modem foi a baixo, renovou o ip mas não o sincronizou com o no-ip que tenho configurado, como não sabia o ip actual do servidor fiquei sem poder trabalhar até chegar a casa.

Portanto fiz um pequeno script em php que recebe um pedido http de uma maquina e guarda o seu ip, o que associado a um crontab a fazer esse pedido de x em x minutos resolve parcialmente o problema num ambiente de desenvolvimento.
Ora cá vai:

<?php

function add($name,$data){
$data[$name]= array("address"=>$_SERVER['REMOTE_ADDR'],"time"=>date("Y-m-d H:i:s")); // guarda a informação no array
return $data;
}
function remove($name,$data){
unset($data[$name]); //remove o elemento do array
return $data;
}
function load($file){
return unserialize (file_get_contents($file)); //carraga o array
}
 
function save($file,$data){
file_put_contents($file, serialize($data)); //grava o array
}

$file = 'ip.serial';
  $data = load($file);
if( isset($_GET["name"]) && $_GET["name"]!=""){
$data=add($_GET["name"],$data);
}else if( isset($_GET["remove"]) && $_GET["remove"]!=""){
$data=remove($_GET["remove"],$data);
}

save($file,$data);
?>

<!DOCTYPE html>
<html>
  <head>
    <title>IP Saver</title>
    <link rel="stylesheet" type="text/css" href="http://cdn.ink.sapo.pt/2.1.0/css/ink-min.css">
  </head>
  <body>
<div class="ink-grid">
<table class="ink-table bordered alternating">
<tr><th>Name</th><th>IP</th><th>Last Ping</th><th>Delete</th></tr>
<?php if(count($data)>0) foreach($data as $key=>$computer):?>
<tr><td><?php echo $key?></td><td><?php echo $computer["address"]?></td><td><?php echo $computer["time"]?></td><td><a href='/ip_save.php?remove=<?php echo $key;?>'>Delete</a></td></tr>
<?php endforeach;?>
</table>
</div>
  </body>
</html>


executando o comando crontab -e é aberto o vosso editor de texto por defeito com as tarefas agendadas, adicionando a seguinte linha ele vai passar a fazer o pedido ao script dando-lhe o nome da maquina. 
*/5 * * * * curl  (servidor remoto)/ip_save.php?name=`hostname`

(não se esqueçam de verificar se o curl está instalado e se não gostarem do editor por defeito executem export EDITOR=nano substituindo nano pelo editor desejado)

o script deve ser alojado num outro servidor que tenham a certeza que têm sempre acesso, também pode/deve ser protegido com autenticação por exemplo um simple auth do protocolo http criando os ficheiros .htaccess e .htpasswd, e mudando o os parâmetros do curl para fazer autenticação


claro que isto é só uma coisa para o desenrasque, mas dá jeito.


Reply all
Reply to author
Forward
0 new messages