Auteur Sujet: Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6  (Lu 74701 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 187
    • Twitter LaFibre.info
Script perl pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #12 le: 24 décembre 2015 à 19:11:38 »
c'est ton code perl qui est pas top top plutot ?

un truc comme ca devrait marcher en Perl (pas testé:):
use LWP::Simple;
$ip= get("https://ip.lafibre.info/ip.php");
printf("Adresse IP publique : $ip\n");
printf("Protocole IP : IPv%d\n",(index(":",$ip)==-1)?4:6);

ps: on me signale que LWP n'est pas forcement installé. Dans ce cas:
sudo apt install libwww-perlou via CPAN

C'est mieux que la méthode avec case et curl, car case demande un
use Switch;qui n'est pas installé par défaut dans les distributions Linux (de même que curl, seul wget est installé par défaut)

Le code fonctionne (il manque un my pour déclarer $ip), mais en IPv6 le résultat n'est pas celui attendu :

$ ./ip.pl
Adresse IP publique : 2a01:6e00:10:410::2
Protocole IP : IPv4

jack

  • Professionnel des télécoms
  • *
  • Messages: 1 676
  • La Madeleine (59)
Script perl pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #13 le: 24 décembre 2015 à 20:38:51 »
Comment ? On souhaite du code compact ?

Bash:
Code: ("bash") [Sélectionner]
target="https://ip.lafibre.info/ip.php"
[[ $(wget -q -O - "$target") == *":"* ]] && echo "ipv6!" || echo "ipv4!"

(3 lignes de moins de 80char, si tu veux l'affichage de l'addresse IP)

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
Script perl pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #14 le: 25 décembre 2015 à 14:42:11 »
C'est mieux que la méthode avec case et curl, car case demande un
use Switch;
qui n'est pas installé par défaut dans les distributions Linux (de même que curl, seul wget est installé par défaut)


Le script avec case et curl est un script shell (/bin/sh ou bash) et pas perl.
Si wget est plus souvent installé que curl, le meme script avec wget:

#!/bin/sh
ip=$(wget wget -q -O - https://ip.lafibre.info/ip.php)
echo Adresse IP publique : $ip
case "$ip" in
*:* ) echo Protocole IP : IPv6;;
* ) echo Protocole IP : IPv4;;
esac


corrector

  • Invité
Script perl pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #15 le: 25 décembre 2015 à 15:08:38 »
vivien utilise un script qui récupère le numéro de port, il y a peut être une raison?

Si il y a un numéro de port après l'adresse IP ce test ne marchera pas.

vivien

  • Administrateur
  • *
  • Messages: 47 187
    • Twitter LaFibre.info
Script perl pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #16 le: 25 décembre 2015 à 15:54:21 »
Oui dans le cas donné, il n'y a pas de port, donc c'est une bonne idée de simplifier.

J'ai mis en ligne les 3 scripts sur la page http://ip.lafibre.info/

Une idée pour le script perl qui retourne toujours IPv4, même quand c'est une IPv6 ?

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
Script perl pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #17 le: 25 décembre 2015 à 21:31:35 »
Une idée pour le script perl qui retourne toujours IPv4, même quand c'est une IPv6 ?

oui inversion de ma part du fonctionnement de la fonction index.

La bonne ligne devrait être:

printf("Protocole IP : IPv%d\n",(index($ip,":")==-1)?4:6);

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 481
  • Malissard (26)
Script perl pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #18 le: 26 décembre 2015 à 09:28:20 »
J'ai p'tet loupé un épisode : pourquoi ne réalises-tu pas le test dans le code php de ta page ?

Ainsi le script à développer se contente de charger la page ce qui serait plus simple à maintenir sur différents OS.

Non ?

vivien

  • Administrateur
  • *
  • Messages: 47 187
    • Twitter LaFibre.info
Script perl pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #19 le: 26 décembre 2015 à 10:17:56 »
Parfait kgersen.

C'est une idée BadMax. Afficher en bas du site lafibre.info, quand il sera dispo en IPv6 (le 1er janvier), si on visualise le site en IPv4 ou IPv6.

L'idée des bouts de code perl / python / bash était de donner un exemple de code qui fonctionne, pour que des personnes qui ont un projet x ou y puisse trouver rapidement la solution.

underground78

  • Expert
  • Abonné Free fibre
  • *
  • Messages: 7 437
  • Orsay (91)
    • FreePON : suivi géographique du déploiement fibre EPON chez Free
Script perl pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #20 le: 26 décembre 2015 à 12:00:09 »
Pour le site, tu pourrais afficher un logo (un peu) différent pour les gens en IPv6 par exemple.

corrector

  • Invité
Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #21 le: 26 décembre 2015 à 17:04:57 »
Avec une tortue? ;)

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
Script pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #22 le: 05 janvier 2016 à 12:32:13 »
Quelques idées a rajouter a ip.lafibre.info : http://dual.tlund.se/

notamment l'url qui "requires resolver to be IPv6 enabled".

Le link vers le BGP Toolkit d'HE est pas mal aussi d'autant que ca indique le RBL.
(par exemple je vois que spamhaus n'aime pas mon IP dynamique attribuée par Orange http://bgp.he.net/ip/90.61.196.245#_rbl )

corrector

  • Invité
Script perl pour récupérer l'IP et indiquer si c'est une IPv4 ou une IPv6
« Réponse #23 le: 06 janvier 2016 à 07:10:53 »
Et c'est un peu moins obscur que les expressions régulières Perl.
La "regexp" Perl ne fait pas du tout la même chose, et je pense que ce serait bien de le préciser à l'intention de ceux qui ne liront pas toute la discussion.