#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 : $myIPCeci 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=XXXLe 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 $myCMDRésultat:
&username=test&password=LeMotDePassete?hostname=test.mondivorcepenible.ch&myip=1.2.3.4Derniè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+
:D
Comment Poser Les Questions De Manière Intelligente - Trouver de l'aide grâce au Groupe des Parrains Linux - Le Pacte des Gnous - l'Almanet doLys de nam1962 et ses amis
PCs sous Debian Stable & Debian Sid.
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)
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
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.
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.XXXDernière modification par Watael (Le 17/07/2021, à 19:02)
Welcome to sHell. · eval is evil.
Hors 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 ![]()
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)
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
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