44 votes

Recherche de l'adresse IP publique dans un Shell Shell.

Je peux trouver mon adresse IP en utilisant la commande ifconfig ou hostname -i.

Mais comment trouver mon IP public ?

(J'ai une IP publique statique mais je veux la trouver en utilisant une commande unix)

3voto

Skittles Points 411

Je sais que c'est bien après coup et que cela ne vaut probablement pas la peine d'être publié, mais voici ma solution.

#!/bin/sh

IP="$(ifconfig | egrep 'inet ' | sed -e 's/inet //' -e 's/addr://' -e 's/ Bcast.*//' -e 's/127.*//')"
echo $IP

Sympathique et simple.

3voto

Kelindil Points 673

Le moyen le plus simple est d'utiliser http://ifconfig.me/ comme suggéré.

Sur cette page, vous saurez quelle commande utiliser en fonction des informations que vous souhaitez récupérer.

Pour IP :

curl ifconfig.meou    curl ifconfig.me/ip

Pour le nom d'hôte public :

curl ifconfig.me/host

Pour toutes les informations dans un fichier XML :

curl ifconfig.me/all.xml

etc... Il suffit de consulter http://ifconfig.me

2voto

petrus Points 5267

Je fais cela souvent, et à partir de beaucoup d'appareils, donc j'ai créé mes deux propres services sur un serveur :

  1. php à la racine d'un serveur web :

    user@host:~$ cat index.php`
    <?php echo $_SERVER['REMOTE_ADDR']; echo "\n" ?>

    Utilisation sur un Shell :

    $ curl -4 mydomain.com
    79.22.192.12

    fonctionne également avec ipv6 :

    $ curl mydomain.com
    2a01:e34:ee7d:180::3

    Avec netcat :

    $ echo "GET /" | nc myserver.com 80
    2a01:e34:ee7d:180::3

    Sur un routeur Cisco :

    router#more http://myserver.com/index.php
    79.22.192.12
  2. hack rapide avec un serveur telnet personnalisé : xinetd génère /usr/bin/env :

    service telnet
    {
       server           = /usr/bin/env
       socket_type      = stream
       protocol         = tcp
       flags            = IPv6
       wait             = no
       port             = 23
       cps              = 3 30
       passenv          = %a
    }

    et y accéder par telnet :

    $ nc -4 myserver.com 23
    REMOTE_HOST=::ffff:79.22.192.12
    
    $ nc myserver.com 23
    REMOTE_HOST=2a01:e34:ee7d:180::3

    fonctionne de la même manière avec un routeur :

    router#telnet myserver.com
    79.22.192.12

De cette façon, vous pouvez le faire fonctionner sur votre réseau interne, si un nat ou un proxy est impliqué dans la communication et que vous souhaitez savoir à partir de quelle IP vous apparaissez.

Il ne nécessite aucun service tiers.

1voto

Si ce que vous voulez, c'est trouver l'adresse IP externe de votre routeur, vous pouvez soit demander au routeur lui-même son adresse wan, soit demander à quelqu'un de l'extérieur de l'obtenir pour vous .

Pour une méthode manuelle, vous pouvez consulter l'un des sites mentionnés ci-dessus qui vous renverra l'adresse IP de la requête en cours.

Pour une méthode automatisée, vous pouvez essayer :

wget -q -O - http://www.ipaddressworld.com | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}'\. 

ce qui vous permettra d'obtenir la ligne qui contient l'adresse IP sur la réponse http, puis de l'analyser avec sed, awk, etc.

1voto

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X