• # OpenSP

    Posté par (site web personnel) . En réponse au message Commande awk et expression reguliere pour extraire une adresse ip. É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

    awk 'match(0,ドル/[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+/{print(substr(0,ドルRSTART,RLENGTH))
    

    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 exemple

    % curl https://monip.org | onsgmls 2>&-
    (HTML
    -\n
    (HEAD
    - 
    (TITLE
    -MonIP.org v1.0
    )TITLE
    -\n 
    AHTTP-EQUIV CDATA Content-type
    ACONTENT CDATA text/html; charset=UTF-8
    (META
    )META
    )HEAD
    -\n
    AALIGN CDATA center
    (P
    ASIZE CDATA 8
    (FONT
    (BR
    -IP : 89.0.149.201
    (BR
    )BR
    )BR
    )FONT
    ASIZE CDATA 3
    (FONT
    (I
    -xdsl-89-0-149-201.netcologne.de
    )I
    (BR
    )BR
    )FONT
    ASIZE CDATA 1
    (FONT
    (BR
    (BR
    -Pas de proxy détecté - No Proxy detected
    )BR
    )BR
    )FONT
    )P
    )HTML
    

    Sous cette forme canonique il est facile d'extraire l'IP recherchée, par exemple avec awk:

    awk -F ' *: *' '1ドル == "-IP" {print(2ドル)}'
    

    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

    % curl -H 'Accept: application/json' https://monip.org
    {'ip':'89.0.149.201','dns':'xdsl-89-0-149-201.netcologne.de','proxy':false}
    

    Te fournirait un moyen bien plus fiable de récupérer une IP.