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

Programmation et administration système Perl Discussion :

Modification script perl redirection url


Sujet :

Programmation et administration système Perl

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2015
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Modification script perl redirection url
    Bonjour,

    Je sollicite de l'aide pour une modification d'un script perl , c'est un programme perl qui sert à la redirection d'url sur un outil squid , pour lesquels je souhaite ajouter un autre condition dans la boucle ( prise en compte de l'url de Production) :

    Il fixe les problemes de redirection sur les url de test ( $INTERNALIP|$TESTURL):$TESTPORT/ ), et je souhaiterai qu'il fasse la même chose pour les url de Prod ($INTERNALIP|$PRODUCTIONURL):$PRODPORT)

    J'ai tenté une modification en rajoutant un condition elseif , cependant en testant ça fonctionne pour l'url de Production et plus pour celle de Test. Est ce que j'ai raté qql chose dans la modification ?

    Merci de votre aide.

    programme à l'origine :

    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
    #!/usr/bin/perl
     
    $INTERNALIP="15.40.40.36";
    $PRODUCTIONURL="add.prt.fr"; 
    $TESTURL="test.add.prt.fr"; 
    $TESTPORT="8001";
     
    # turn off write buffering 
    $| = 1;
    while (<>) { 
     
      # get the URL from the request 
      chomp($url = $_);
     
      if ($url =~ m/($INTERNALIP|$TESTURL):$TESTPORT/)
      {
        # fix up the cname and port
        $url =~ s^:$TESTPORT^^; 
        $url =~ s^$INTERNALIP^$TESTURL^; 
     
        # fix the protocol 
        $url =~ s^https://^http://^; 
      }
      else
      {
        # fix up the name 
        $url =~ s^$INTERNALIP^$PRODUCTIONURL^; 
     
        # fix the protocol 
        $url =~ s^http://^https://^; 
      }
     
      # return the fixed URL to squid 
      print "$url\n"; 
    }
    programme modifiée :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    #!/usr/bin/perl
     
    $INTERNALIP="15.40.40.36";
    $PRODUCTIONURL="add.prt.fr"; 
    $TESTURL="test.add.prt.fr"; 
    $TESTPORT="8001";
    $PRODPORT="8000";
     
    # turn off write buffering 
    $| = 1;
    while (<>) { 
     
      # get the URL from the request 
      chomp($url = $_);
     
      if ($url =~ m/($INTERNALIP|$TESTURL):$TESTPORT/)
      {
        # fix up the cname and port
        $url =~ s^:$TESTPORT^^; 
        $url =~ s^$INTERNALIP^$TESTURL^; 
     
        # fix the protocol 
        $url =~ s^https://^http://^; 
      }
    elsif ($url =~ m/($INTERNALIP|$PRODUCTIONURL):$PRODPORT/)
     
      {
     
        # fix up the cname and port
     
        $url =~ s^:$PRODPORT^^; 
     
        $url =~ s^$INTERNALIP^$PRODURL^; 
     
     
     
        # fix the protocol 
     
        $url =~ s^https://^http://^; 
     
      }
      else
      {
        # fix up the name 
        $url =~ s^$INTERNALIP^$PRODUCTIONURL^; 
     
        # fix the protocol 
        $url =~ s^http://^https://^; 
      }
     
      # return the fixed URL to squid 
      print "$url\n"; 
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Comme ça, à première vue, c'est que le script ne passait déjà pas dans la partie affirmative du if et que tes corrections sur les URL de tests étaient faites dans la partie else. En ajoutant une condition dans le else, il ne le fait plus.

    Donc, ta condition du if ne doit pas être complètement correcte. Verifie-la soigneusement.

    Sinon, je ne comprends pas bien ton else final, c'est peut-être lui qui te joue des tours.

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2015
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci de ton retour,

    Concernant le script d'origine, est ce que tu vois des problemes ?

    En fait je souhaitais simplifier dans ce sens :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    #!/usr/bin/perl
     
     
     
    $INTERNALIP="15.40.40.47";
     
    $PRODUCTIONURL="add.ptr.lu";
     
    $PRODPORT="8000";
     
     
     
     
     
    # turn off write buffering
     
    $| = 1;
     
    while (<>) {
     
     
     
      # get the URL from the request
     
      chomp($url = $_);
     
     
     
      if ($url =~ m/($INTERNALIP|$PRODUCTIONURL):$PRODPORT/)
     
      {
     
        # fix up the cname and port
     
        $url =~ s^:$PRODPORT^^;
     
        $url =~ s^$INTERNALIP^$PRODUCTIONURL^;
     
     
     
        # fix the protocol
     
        $url =~ s^https://^http://^;
     
      }
     
      else
     
      {
     
        # fix up the name
     
        $url =~ s^$INTERNALIP^$PRODUCTIONURL^;
     
     
     
        # fix the protocol
     
        $url =~ s^http://^https://^;
     
      }
     
     
     
      # return the fixed URL to squid
     
      print "$url\n";
     
    }

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    non, comme ça, je ne vois pas de problème particulier, si ce n'est que deux des substitutions effectuées sont identiques et pourraient être "mises en facteur" en dehors du if ... then ... else, mais c'est une pure optimisation de codage (éviter d'écrire deux fois le même chose).

    Je ne peux rien dire de plus si tu ne donnes pas un (ou deux ou trois) exemples des données en entrée et aussi, ce que tu désires en sortie pour ces mêmes données.

    Ah, aussi, quand tu donnes des exemples de code ou de données, mets les entre les balises code (le bouton # au-dessus de la fenêtre de rédaction d'un post), ça permet de préserver le format.

Discussions similaires

  1. modification script perl/except
    Par tetzispa dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 03/07/2015, 07h52
  2. modification script perl pour nagios
    Par tetzispa dans le forum Programmation et administration système
    Réponses: 19
    Dernier message: 27/09/2014, 22h29
  3. modif script PERL
    Par vigiepresse dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/01/2011, 20h03
  4. Réponses: 8
    Dernier message: 12/04/2007, 15h04

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