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>
</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.