IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Test d'une URL avec redirection (curl / wget)


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut Test d'une URL avec redirection (curl / wget)
    Bonjour,

    Un webservice renvoie des documents. Il y a parfois des erreurs (400 et 404) et nous voudrions mettre en place un script vérifiant ces URL. Le problème est qu'il y a une redirection et que le webservice interrogé par curl retourne toujours 200.
    Mon script testant le webservice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/bin/bash
    # Conversion fichier Windows -> Unix vers un fichier temporaire
    sed $'s/\r$//' $1 > sae_temp.csv
     
    # Suppression du fichier de resultat s'il existe
    if [ -e sae_resultat_${1} ]
    then rm sae_resultat_${1} 
    fi
     
    # Traitement du fichier
    # Format du fichier resultat : libelle de l'application;URL;code HTTP de retour (200 = OK)
    while IFS=';' read dateSolicitation libelleAppli nirod numenvoi url 
    do
        urlstatus=$(curl -o /dev/null --silent --head --write-out '%{http_code}' "$url" )
        echo "$libelleAppli;$url;$urlstatus" >> sae_resultat_${1}
    #    urlstatus=$(curl -o /dev/null --silent --head --write-out '%{http_code}' "$url" )
    #    echo "$libelleAppli;$url;$urlstatus" >> sae_resultat_${1}
    done < sae_temp.csv
     
    # Suppression du fichier temporaire
    rm sae_temp.csv
    Le retour du webservice dont nous n'avons pas le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <HTML><HEAD>
     <TITLE></TITLE>
     <META HTTP-EQUIV="content-type" content="text/html; charset=ISO8859-1">
     <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
     <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
     <META HTTP-EQUIV="expires" CONTENT="0">
     <SCRIPT LANGUAGE="Javascript">
     var etatComposant = null;
     alea=100000*(Math.random());
     var urlJS = "http://127.0.0.1:123/testcomposant?" + alea;
     function urlTestComposant()
     {
      document.write("<SCRIPT LANGUAGE='JavaScript' SRC='" + urlJS  + "'><\/SCRIPT>");
     }
     urlTestComposant();
     </SCRIPT>
     </HEAD><BODY>
     <FORM NAME="formSrvSec" ACTION="http://127.0.0.1:123/secjava" METHOD="GET">
     <INPUT type="hidden" name="SERVEUR" value="http://mon.serveur.com:1234/MetierGet/?version=">
     <INPUT type="hidden" name="ALEA" value="13C818C37C426FF7">
     <INPUT type="hidden" name="SYSTEM" value="SY_XXX">
     <INPUT type="hidden" name="ATTRIBUTS" value="XYZ">
     </FORM>
     <SCRIPT LANGUAGE="Javascript">
     if (etatComposant != null)
     {
            val = document.formSrvSec.SERVEUR.value + etatComposant
            document.formSrvSec.SERVEUR.value = val;
       document.formSrvSec.submit();
     }
     else
     {
        url = document.formSrvSec.elements["SERVEUR"].value + "null&Jeton=SRVSEC_INDISPONIBLE";
        document.location.href = url;
     }
     </SCRIPT>
     </BODY></HTML>

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Sans conviction, mais sait-on jamais…

    Extrait du man curl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
           -L, --location
                  (HTTP) If the server reports that the requested page has moved to a different location
                  (indicated  with  a  Location:  header and a 3XX response code), this option will make
                  curl redo the request on the new place. If used together with  -i,  --include  or  -I,
                  --head,  headers  from all requested pages will be shown. When authentication is used,
                  curl only sends its credentials to the initial host. If a redirect  takes  curl  to  a
                  different  host, it won't be able to intercept the user+password. See also --location-
                  trusted on how to change this. You can limit the amount  of  redirects  to  follow  by
                  using the --max-redirs option.
     
                  When  curl  follows a redirect and the request is not a plain GET (for example POST or
                  PUT), it will do the following request with a GET if the HTTP response was  301,  302,
                  or  303.  If the response code was any other 3xx code, curl will re-send the following
                  request using the same unmodified method.
     
                  You can tell curl to not change the non-GET request method to GET after a 30x response
                  by using the dedicated options for that: --post301, --post302 and --post303.
    Voir aussi ce post


  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    Après une semaine de boulot dessus :
    - La page faisant une redirection est un système de sécurité lié à un lecteur de carte.
    - Il y avait encore une autre application/redirection intermédiaire
    - En appelant directement le webservice concerné (avec les bonnes données) j'arrive à savoir s'il répond KO ou OK, et ça suffira.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par Christophe P. Voir le message
    j'arrive à savoir s'il répond KO ou KO, et ça suffira.
    C'est sûr, s'il répond KO ou KO, ça devrait suffire...

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    C'est sûr, s'il répond KO ou KO, ça devrait suffire...
    Corrigé...

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par Christophe P. Voir le message
    Corrigé...
    … ou pas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Redirection exacte d'une url avec .htaccess
    Par mims1664 dans le forum Apache
    Réponses: 1
    Dernier message: 09/01/2010, 13h31
  2. fopen - ouverture d'une url avec espace
    Par argister dans le forum Langage
    Réponses: 2
    Dernier message: 07/03/2006, 09h29
  3. Appeler une URL avec & depuis une ligne de commande
    Par Fritzoune dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 13/02/2006, 14h52
  4. test d'une requête avec paramètre
    Par hervé14670 dans le forum Access
    Réponses: 1
    Dernier message: 12/01/2006, 22h45
  5. test si une Url est valide ?
    Par lulu1664 dans le forum Windows
    Réponses: 5
    Dernier message: 10/08/2005, 09h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo