Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/07/2021, à 08:43

hep

[Résolu] Ligne de commande - requête HTTP - GET IP POST DnyDNS

Bonjour tous le monde,

J'ai besoin de créer un script qui a pour but via des requêtes HTTP de:
1. Connaître l'adresse IP publique
    Via cette url: http://checkip.dyndns.org/
    La page web affiche: Current IP Address: 78.xxx.xxx.xxx
    Donc je suppose qu'avec un WGET ou autre je peux récupérer ceci.

2. Envoyer a mon service DynDNS (Infomaniak.com) la nouvelle adresse via leur API
    https://www.infomaniak.com/fr/support/f … e-via-lapi
    Via un POST https://username:password@infomaniak.com/nic/update?hostname=subdomain.yourdomain.com&myip=1.2.3.4

Comment faire ceci en ligne de commande ?


EDIT: Titre mis en résolut.

Modération: masquage de l'adresse IP.

Dernière modification par bruno (Le 16/07/2021, à 15:34)

Hors ligne

#2 Le 16/07/2021, à 11:34

hep

Re : [Résolu] Ligne de commande - requête HTTP - GET IP POST DnyDNS

Bon ...

Pour la partie une voici ce qui fonctionne:

#!/bin/bash
myIP="Not defined"
myIP=$(curl http://checkip.dyndns.org/)
echo Mon adresse IP : $myIP
myIP=$(tr -d '<html><head><title>Current IP Check</title></head><body>Current IP Address:' <<< "$myIP")
echo Mon adresse IP : $myIP

Ceci retourne bien l'adresse IP.

Pour la partie 2, la commande qui fonctionne depuis un shell:

https://infomaniak.com/nic/update?hostname=subdomain.yourdomain.com&myip=1.2.3.4&username=XXX&password=XXX

Le truc, c'est que je n'arrive pas a construire cette commande. La concaténation donne des résultats curieux.

myCMD1="wget https://infomaniak.com/nic/update?hostname=test.mondivorcepenible.ch&myip="
myCMD2="&username=test&password=LeMotDePasse"
myCMD=$myCMD1$myIP$myCMD2
echo $myCMD

Résultat:

&username=test&password=LeMotDePassete?hostname=test.mondivorcepenible.ch&myip=1.2.3.4

Dernière modification par hep (Le 16/07/2021, à 11:39)

Hors ligne

#3 Le 16/07/2021, à 11:43

michel_04

Re : [Résolu] Ligne de commande - requête HTTP - GET IP POST DnyDNS

Bonjour.


1.

michel@Michel-T450:~$ curl ifconfig.me
78.155.6.161 
michel@Michel-T450:~$ 

(Adresse IP publique modifiée.)


2.
Voir les infos sur la page Les DNS Dynamiques (DDNS) de la documentation.


A+

Hors ligne

#4 Le 16/07/2021, à 15:15

hep

Re : [Résolu] Ligne de commande - requête HTTP - GET IP POST DnyDNS

Hello,

Grâces a tes indications, j'ai réussi.
Merci.

Voici mon script, si ça peux aider des autres.

#!/bin/bash
myIP="Not defined"
myIP=$(curl ifconfig.me)
myCMD="wget https://infomaniak.com/nic/update?hostname=subdomaine.domaine.ch&myip=$myIP&username=XXX&password=YYYY"
$myResult=$($myCMD)

Hors ligne

#5 Le 16/07/2021, à 16:07

Nuliel

Re : [Résolu] Ligne de commande - requête HTTP - GET IP POST DnyDNS

Bonjour,
Quelques remarques:
- c'est pas un POST mais un GET si tu envoies les infos dans l'url.
- myIP="Not defined" n'est pas utile puisque tu l'écrases à la ligne d'après
- wget va télécharger la page, tu peux aussi utiliser curl si tu ne veux pas récupérer la page sous forme de fichier (et d'ailleurs curl a une option pour faire une requête POST)
- pourquoi ne pas faire myresult=$(wget "url_très_longue_avec_paramètres") directement?
- dans l'url, il serait préférable d'utiliser ${var} plutôt que $var pour bien délimiter les variables du reste qui n'est pas interprété

Dernière modification par Nuliel (Le 16/07/2021, à 16:07)

Hors ligne

#6 Le 17/07/2021, à 18:53

hep

Re : [Résolu] Ligne de commande - requête HTTP - GET IP POST DnyDNS

Hello Nuliel,

merci pour ces remarques.

Nuliel a écrit :

Bonjour,
Quelques remarques:

- wget va télécharger la page, tu peux aussi utiliser curl si tu ne veux pas récupérer la page sous forme de fichier (et d'ailleurs curl a une option pour faire une requête POST)

En effet, c'est fâcheux.
Le truc, c'est que je comprend pas comment faire avec curl.

Hors ligne

#7 Le 17/07/2021, à 19:02

Watael

Re : [Résolu] Ligne de commande - requête HTTP - GET IP POST DnyDNS

$ w3m -dump 'http://checkip.dyndns.org/'
Current IP Address: XXX.XXX.XXX.XXX

Dernière modification par Watael (Le 17/07/2021, à 19:02)


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#8 Le 17/07/2021, à 19:12

hep

Re : [Résolu] Ligne de commande - requête HTTP - GET IP POST DnyDNS

Pfiouuu j'ai trouvé ...

#!/bin/bash
myNewIP=$(curl -s ifconfig.me)
curl -d 'hostname=subdomaine.domaine.ch&username=XXX&password=YYYY' -d myip=$myNewIP https://infomaniak.com/nic/update?

Je dois a priori séparer l’envoi de l'IP pour qu'il prenne en compte la valeur de la variable.
En ajoutant dans le premier curl le "-s" il n'affiche plus les info du "download".
Et n'ayant nul besoin d'avoir le resultat du POST dans une variable, je lance curl directement.

Comme ça marche, sans avoir des fichiers inutile sur mon disque-dure.

Merci encore pour tes remarques smile

Je découvre petit à petit comment tout ça fonctionne ...

Hors ligne

#9 Le 17/07/2021, à 20:06

Nuliel

Re : [Résolu] Ligne de commande - requête HTTP - GET IP POST DnyDNS

Le paramètre d est pour envoyer une requête POST, je ne sais pas si c'est ce que tu souhaites faire (en fait je remarquais qu'en mettant les paramètres dans l'url c'était une requête GET)
Je propose

curl -d "hostname=subdomaine.domaine.ch&username=XXX&password=YYYY&myip=$(curl -s ifconfig.me)" https://infomaniak.com/nic/update

(ce qui fait les deux commandes en une et sans le ? à la fin)

Dernière modification par Nuliel (Le 17/07/2021, à 20:07)

Hors ligne

#10 Le 17/07/2021, à 21:20

hep

Re : [Résolu] Ligne de commande - requête HTTP - GET IP POST DnyDNS

Hoo bien vu.

Merci

Hors ligne