Bonjour,
Jé débute avec grep, curl, wget, awk et je cherche à extraire mon adresse ip récupéré sur le site monip.org.
Je fais donc :
wget http://monip.org --output-document moniphtml.txt
Puis j'ai la 6eme ligne de mon fichier qui est
IP : A.B.C.D
A, B, C, D pouvant faire entre 1 et 3 caractères.
Seriez-vous assez sympa pour me donner la commande awk ou grep pour extraire A.B.C.D de ce fichier?
Merci beaucoup! :)
# Re:
Posté par 1984 . Évalué à 6. Dernière modification le 11 février 2018 à 18:08.
[^] # Re:
Posté par 1984 . Évalué à 1.
Je ne peux pas modifier mon message, je rajoute aussi:
ça te donne des informations supplémentaire.
[^] # Re:
Posté par Obsidian . Évalué à 2.
Je ne connaissais pas
ifconfig.me
! C'est vrai que ça rend les choses beaucoup plus simples ^[^] # Re:
Posté par totof2000 . Évalué à 3.
UUOC
# Pas la bonne méthode
Posté par gUI (Mastodon) . Évalué à 7. Dernière modification le 11 février 2018 à 18:10.
En sortie tu as une page HTML et c'est assez compliqué d'en extraire ce qui t'intéresse, surtout que aujourd'hui c'est la 4e ligne, mais si ça change demain ?
Pour choper ton IP publique dans un script il existe d'autres services destinés spécialement à ça (pas besoin de s'embêter avec le parsing) :
Un service comme
http://ipinfo.io/ip
te donnera une page non formatée HTML : uniquement l'IP. Tu as aussi des serveurs DNS qui te propose de répondre à ta question via la commandedig +short myip.opendns.com @resolver1.opendns.com
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
# OpenSP
Posté par Michaël (site web personnel) . Évalué à 5.
C'est en général une assez mauvaise idée d'utiliser des expressions rationnelle pour fouiller dans une page HTML.
Ici la page est assez simple tu peux afficher la première IP trouvée sur chaque ligne avec
En général pour traiter du HTML ou plus généralement du SGML, on utilise OpenSP et plus précisément le programme
onsgmls
. Par exempleSous cette forme canonique il est facile d'extraire l'IP recherchée, par exemple avec
awk
:Ceci dit, si c'est un serveur que tu contrôles, tu pourrais lui apprendre à répondre avec du texte ou du JSON à la demande. Par exemple
Te fournirait un moyen bien plus fiable de récupérer une IP.
# Avec grep, sinon.
Posté par Obsidian . Évalué à 4. Dernière modification le 12 février 2018 à 12:17.
L'un des sites donnés dans le premier commentaire te permet d'avoir directement ton IP sous forme de texte, épurée de tout le reste. Donc, ça résout le problème.
Toutefois, si tu veux utiliser le lien que tu nous donnes et exploiter la page en l'état, plutôt que
sed
ouawk
, le plus simple est d'utilisergrep
, voire mêmeegrep
, avec l'option-o
pour n'afficher que le motif reconnu, parce que l'adresse IP en notation décimale pointée (avec des points, donc, et pas des tirets dans le FQDN) n'apparaît qu'une fois sur la page. Du coup :Sinon, en général, si la page est suffisamment bien écrite, tu peux la parser comme du XML avec
xmllint --html
et utiliser un chemin XPath pour aller directement cibler le nœud qui s'intéresse. Et si en plus, de l'autre côté, le webmaster a eu la présence d'esprit de le repérer avec un id explicite, alors tu n'auras plus jamais besoin de te soucier de savoir si la page a changé de présentation ou pas.# ifconfig.me
Posté par Joris Dedieu (site web personnel) . Évalué à 2.
curl ifconfig.me
[^] # Re: ifconfig.me
Posté par Obsidian . Évalué à 2.
Déjà indiquée dans le tout premier commentaire…
# magnifique
Posté par kr1p . Évalué à 2.
Magnifique, merci beaucoup pour vos contributions, j'ai de quoi m'amuser un moment avec toutes les alternatives :)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.