#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+
:D
De la bonne manière de poser les questions - Trouver de l'aide grâce au Groupe des Parrains Linux - Le Pacte des Gnous
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)
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.XXX
Dernière modification par Watael (Le 17/07/2021, à 19:02)
Connected \o/
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)
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