Un petit script – 2 : Adresse IP WAN, localisation, speedtest

Ce petit script va faire 3 choses : Afficher votre adresse IP WAN (externe), la localisation géographique de cette adresse, la bande passante en download de cette connexion. Je me sers de ce script quand je me connecte avec OpenVPN à des serveurs VPN étrangers. Je sais ainsi d’un coup d’œil si je ne suis pas sur l’adresse IP de mon domicile, à quel endroit je suis connecté et si je peux télécharger comme un cochon la vitesse de download est intéressante.

Dans un petit script – 1, j’avais expliqué pourquoi j’utilisais dig (plus rapide notamment). Je me base sur le service ipinfo.io (le meilleur à ma connaissance mais qui donne parfois des réponses inexactes pour la ville) pour récupérer les informations géographiques, jq va traiter le JSON en sortie enfin speedtest-cli permet d’avoir la bande passante.

Vous aurez donc besoin de dnsutils (pour dig), jq et speedtest-cli. Le script se lance basiquement avec bash /chemin/vers/le/script.sh (vous pouvez le rendre exécutable avec chmod +x /chemin/vers/le/script.sh). A noter que le (gros) défaut de ce script est speedtest-cli dont le test de bande passante est assez long, il faut en général 20 secondes pour que toutes les informations soient affichées.

#!/bin/bash
# sudo apt install dnsutils jq && sudo -H pip3 install speedtest-cli

myip=$(dig +short myip.opendns.com @resolver1.opendns.com)
geoip=$(curl -s ipinfo.io/"$myip" | jq -r '[.country, .city] | join(", ")')

echo "$myip ($geoip)"
speedtest-cli --no-upload --simple --secure | grep Download

exit 0

Vous aurez ce type de sortie :
153.92.40.6 (CA, Toronto)
Download: 21.90 Mbit/s

37.72.175.85 (US, New York)
Download: 9.57 Mbit/s

Si vous voulez Ping, Download et Upload speedtest-cli --simple --secure, si vous voulez juste Download et Upload speedtest-cli --simple --secure | grep Mbit

Tcho !

Déjà 8 avis pertinents dans Un petit script – 2 : Adresse IP WAN, localisation, speedtest

  • #!/bin/bash
    #yum install dnsutils jq && sudo -H yum install python2-speedtest-cli

    myip=$(dig +short myip.opendns.com .opendns.com)
    geoip=$(curl -s ipinfo.io/ »$myip » | jq -r ‘[.country, .city] | join(« , « )’)

    echo « $myip ($geoip) »
    speedtest-cli –simple –secure | grep Download

    exit 0

    pour redhat et centos

  • Comme tu précises « bash /chemin/vers/le/script.sh », la parenthèse d’après « n’oubliez pas de le rendre exécutable avec chmod +x script.sh » n’est plus nécessaire ?
    J’ai tendance à préférer l’utilisation de bash plutôt que le chmod, mais les 2 en même temps n’ont pas d’intérêt ?
  • zipe31
    Salut Cascador,

    Comme l’a dit Tontof, si tu fais précéder ton script par le nom du shell, pas la peine de rendre exécutable ton script.

    Si tu le rends exécutable, il faudra soit donner le chemin complet pour l’exécuter, soit le mettre dans un dossier contenu dans la variable d’environnement ${PATH}, et le lancer comme suit ./ton_script.bash

    Sinon, concernant ton script, pourquoi ne pas le simplifier avec juste :

    curl -s ipinfo.io | jq -r ‘[.ip, .country, .city] | join(« , « )’

    qui renvoie d’un seul coup, l’IP, le lieu, et le pays ?

    Bonne journée.

  • Bonsoir,
    Je préfère le petit « chmod +x », et cela pour une raison simple. Lorsque je fais un « ls -l » je vois tout de suite les scripts opérationnels et ceux qui sont soit en construction ou en « étude » de test… Puisque je ne les ai pas rendu exécutable.
    Le fait de rendre exécutable à l’avantage de la clarté!
    Bonne nuit!

Les commentaires sont fermés.