Si c'est obtenir ton adresse ip publique, te fait pas ch**r, ouvre un accès libre chez free.fr puis ouvre toi un compte page perso dessus.
Connecte toi ensuite sur ftpperso.free.fr avec ton identifiant et mot de passe et pose un fichier ip.php dessus avec ce contenu :
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
Puis pour avoir ton ip publique il te suffira ensuite de faire un lynx --dump http://rapsys.free.fr/ip.php
(remplace rapsys par ton compte)
Bon j'ai mis ça en place pour moi donc tu peux l'utiliser je pense : http://rapsys.free.fr/ip.php
(évite de faire des téléchargement avec un délais entre deux tentatives de moins d'une demi heure...)
Ensuite si tu veux pouvoir contacter ta machine en permanence depuis l'extérieur, il te faut plusieurs choses :
- mettre 192.168.1.2 en dmz par exemple
- fixer l'ip locale de ton serveur sous linux a 192.168.1.2
- ouvrir un compte dyndns ou un dynhost chez ovh par exemple
Pour mettre a jour ton dyndns tu peux utiliser le script suivant :
#! /usr/bin/php
<?php
//Define the domain
define('DOMAIN', 'members.dyndns.org');
//Check file function
function checkfile()
{
//Check if file exist
if(is_file(FILE))
{
//Return the file content
return file_get_contents(FILE);
}
else
//Return localhost to force update
return '127.0.0.1';
}
//Checkip function
function checkip()
{
//The socks
$sock = @fsockopen('checkip.dyndns.org', 80, $errno, $errstr);
//Exit if socket is in bad state
if (!$sock) die("Update impossible: $errstr ($errno)\n");
Ensuite enregistre le sous le mode 755 sous le nom /usr/bin/ipupdate
Puis ajoute ça dans /etc/cron.d/dyndns :
#!/bin/bash
# /etc/cron.d/dyndns: crontab fragment for dyndns
# This update dyndnds ip.
# Look for and update dyndns ip every 30 minutes
08,38 * * * * login [ -x /usr/bin/php ] && [ -x /usr/bin/ipupdate ] && /usr/bin/ipupdate
Ps : pense a remplace login par ton nom d'user (unix pour le cron.d) et dyndns pour le script ipupdate
pense a remplacer example.dyndns.org et password avec ton nom de domaine dyndns et ton password.
Le script de mise a jour de dyndns n'utilise pas l'ip récupérée de chez mon compte free, mais de chez dyndns.
Il se peux que en cas d'erreur un fichier /tmp/ipupdate.dyndns.lock soit créé, tu a intérêt a regarder pourquoi il est créé avant de l'effacer pour relancer les mises a jour.
# Que veux tu faire ???
Posté par Raphaël G. (site web personnel) . En réponse au message phpupdate. Évalué à 3.
Connecte toi ensuite sur ftpperso.free.fr avec ton identifiant et mot de passe et pose un fichier ip.php dessus avec ce contenu :
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
Puis pour avoir ton ip publique il te suffira ensuite de faire un lynx --dump http://rapsys.free.fr/ip.php
(remplace rapsys par ton compte)
Bon j'ai mis ça en place pour moi donc tu peux l'utiliser je pense :
http://rapsys.free.fr/ip.php
(évite de faire des téléchargement avec un délais entre deux tentatives de moins d'une demi heure...)
Ensuite si tu veux pouvoir contacter ta machine en permanence depuis l'extérieur, il te faut plusieurs choses :
- mettre 192.168.1.2 en dmz par exemple
- fixer l'ip locale de ton serveur sous linux a 192.168.1.2
- ouvrir un compte dyndns ou un dynhost chez ovh par exemple
Pour mettre a jour ton dyndns tu peux utiliser le script suivant :
#! /usr/bin/php
<?php
//Define the domain
define('DOMAIN', 'members.dyndns.org');
//Define the path
define('PATH', '/nic/update');
//Update file
define('FILE', '/tmp/.ipupdate.dyndns');
//Check if lock file is present
if (is_file(FILE.'.lock'))
die('Last time: '.file_get_contents(FILE.'.lock'));
//Define key and identification
define('USERINFO', base64_encode('login:password'));
define('USERAGENT', 'rapsys_php_ipupdate/0.3rc4 rapsys@free.fr');
define('DATAINFO', '?system=dyndns&hostname=example.dyndns.org&wildcard=ON');
//Check file function
function checkfile()
{
//Check if file exist
if(is_file(FILE))
{
//Return the file content
return file_get_contents(FILE);
}
else
//Return localhost to force update
return '127.0.0.1';
}
//Checkip function
function checkip()
{
//The socks
$sock = @fsockopen('checkip.dyndns.org', 80, $errno, $errstr);
//Exit if socket is in bad state
if (!$sock) die("Update impossible: $errstr ($errno)\n");
fputs($sock, "GET / HTTP/1.1\r\n");
fputs($sock, "Host: checkip.dyndns.org\r\n");
fputs($sock, "User-Agent: ".USERAGENT."\r\n");
fputs($sock, "\r\n");
//Get the header
$headers = "";
while ($str = trim(fgets($sock, 4096)))
$headers .= "$str\n";
//Get the body (ip)
$remote = "";
while (!feof($sock))
$remote .= fgets($sock, 4096);
//Close the socket
fclose($sock);
//Store result for investigate
$fd = fopen(FILE.'.ip', 'w');
fwrite($fd, $headers.$remote);
fclose($fd);
//Return the answer
return preg_replace('/.*Current IP Address: ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*/s', '1円', $remote);
}
if (checkip() != checkfile())
{
//Open a socket
$sock = @fsockopen('ssl://'.DOMAIN, 443, $errno, $errstr, 30);
//Exit if socket is in bad state
if (!$sock) die("Update impossible dyndns: $errstr ($errno)\n");
//Forge the request
fputs($sock, "GET ".PATH.DATAINFO." HTTP/1.1\r\n");
fputs($sock, "Host: ".DOMAIN."\r\n");
fputs($sock, "Authorization: Basic ".USERINFO."\r\n");
fputs($sock, "User-Agent: ".USERAGENT."\r\n");
fputs($sock, "\r\n");
//Get the header
$headers = "";
while ($str = trim(fgets($sock, 4096)))
$headers .= "$str\n";
//Get the body (ip)
$remote = "";
while (!feof($sock))
$remote .= fgets($sock, 4096);
//Close the socket
fclose($sock);
//Store result for invertigate
$fd = fopen(FILE.'.update', 'w');
fwrite($fd, $headers.$remote);
fclose($fd);
//Get the return code
$retcode = preg_replace('/(?:.*\n)([a-z]+).*/s', '1円', $remote);
//Touch lock file if something goes wrong
if ($retcode != 'good' && $retcode != 'nochg')
{
$fd = fopen(FILE.'.lock', 'w');
date_default_timezone_set('UTC');
fwrite($fd, date("l d F Y G:i:s").': Update impossible dyndns: '.$remote);
fclose($fd);
echo date("l d F Y G:i:s").': Update impossible dyndns: '.$remote;
}
//Update FILE
$fd = fopen(FILE, 'w');
fwrite($fd, preg_replace('/.*(?:good|nochg) ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*/s', '1円', $remote));
fclose($fd);
}
?>
Ensuite enregistre le sous le mode 755 sous le nom /usr/bin/ipupdate
Puis ajoute ça dans /etc/cron.d/dyndns :
#!/bin/bash
# /etc/cron.d/dyndns: crontab fragment for dyndns
# This update dyndnds ip.
# Look for and update dyndns ip every 30 minutes
08,38 * * * * login [ -x /usr/bin/php ] && [ -x /usr/bin/ipupdate ] && /usr/bin/ipupdate
Ps : pense a remplace login par ton nom d'user (unix pour le cron.d) et dyndns pour le script ipupdate
pense a remplacer example.dyndns.org et password avec ton nom de domaine dyndns et ton password.
Le script de mise a jour de dyndns n'utilise pas l'ip récupérée de chez mon compte free, mais de chez dyndns.
Il se peux que en cas d'erreur un fichier /tmp/ipupdate.dyndns.lock soit créé, tu a intérêt a regarder pourquoi il est créé avant de l'effacer pour relancer les mises a jour.