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

Linux Discussion :

Traduction script Korn shell en perl


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 22
    Points : 13
    Points
    13
    Par défaut Traduction script Korn shell en perl
    bonjour à tous,

    J'ai un script écrit en perl auquel je dois ajouter une liste de commande en korn shell dont voici le contenu (c'est une commande pour récupérer le listener oracle) :
    Soit FIC, la définition de création d'un fichier allant de 1 à 7.

    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
    #!/bin/ksh
    #
    # ksh d'epuration et compression du listener
     
    . /rep/software/softactif/environment.ksh
     
    FIC="listener.trace.`date +%u`"
    cd $ORACLE_HOME/network/trace
    rm $FIC.gz
    cat listener.log | grep -v dtsrun | grep -v msdtc >> $FIC
    cat /dev/null > ./listener.log
    gzip -f $FIC
    cd $ORACLE_HOME/network/log
    rm $FIC.gz
    cat listener.log | grep -v dtsrun | grep -v msdtc >> $FIC
    cat /dev/null > ./listener.log
    gzip -f $FIC
    Pouvez m'indiquez comment je peux implémenter ces commandes dans mon script en perl ?

    Merci d'avance ,

    OL.

  2. #2
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Citation Envoyé par olemoine Voir le message

    Pouvez m'indiquez comment je peux implémenter ces commandes dans mon script en perl ?
    Euh, tu peux simplement lancer ton script (si y'a ksh sur ta machine)
    Sinon, la transfo est toute simple:
    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
     
     
    my $oracle_home = "XXX";
     
    my $fic="listener.trace." . `date +%u`;
    chdir("$oracle_home/network/trace");
    `rm $fic.gz`;
    `cat listener.log | grep -v dtsrun | grep -v msdtc >> $fic`;
    `cat /dev/null > ./listener.log`;
    `gzip -f $fic`;
    chdir("$oracle_home/network/log");
    `rm $fic.gz`;
    `cat listener.log | grep -v dtsrun | grep -v msdtc >> $fic`;
    `cat /dev/null > ./listener.log`;
    `gzip -f $fic`;
    Attention: code non testé et effets de bord prévus (si tu as des choses spéciales dans ton /rep/software/softactif/environment.ksh).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup pour tes conseils,

    Voici les modifications que j'ai apporté à mon script PERL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $log_file     = "$ENV{ORACLE_HOME}/network/log/listener.tar.`date +%u`";
    $listener_tar = "/tmp/rep/listener.tar.`date +%u`";
    $fic          = "listener.tar.`date +%u`";
     
    chdir("$oracle_home/network/log");
    exit 145 if system "rm $fic.gz";
    exit 145 if system "cat listener.log | grep -v dtsrun | grep -v msdtc >> $fic";
    exit 145 if system "cat /dev/null > ./listener.log";
    exit 145 if system "$tar -cf $listener_tar $log_file";
    exit 145 if system "$gzip -f $fic";
    Il supprime d'abord le fichier listener.tar.x du jour de la semaine dernière.
    Puis il prends des insformations dans le fichier Listerner.log, recréé un fichier listener.tar.x
    Il archive ensuite ce fichier dans un répertoire temporaire /tmp/rep/.
    Il zipp ensuite le fichier dans le répertoire courant.

    Ma question : le script n'est il pas susceptible de planter si il n'existe pas (à la première utilisation) de fichier listener.tar.x dans le répertoire courant (car je le supprime en premier lieu).
    Si oui, ne faudrait il pas rajouter un "si le fichier n'existe pas, ne pas le supprimer", pourriez vous mù'aider ?

    Merci d'avance,

    OL

  4. #4
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Citation Envoyé par olemoine
    Ma question : le script n'est il pas susceptible de planter si il n'existe pas (à la première utilisation) de fichier listener.tar.x dans le répertoire courant (car je le supprime en premier lieu).
    Planter, non, il fera ce que tu lui as demandé: exit 145


    Citation Envoyé par olemoine Voir le message
    Si oui, ne faudrait il pas rajouter un "si le fichier n'existe pas, ne pas le supprimer", pourriez vous mù'aider ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (-e "$fic.gz") { exit 145 if system("rm...}
    Voir "perldoc -f -X" (ou man perlfunc)

    Et pareil, tu peux mettre des protections sur les chdir():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chdir(...) or die("Cannot go to ...\n");
    Quant à tes exit 145, perso, je mettrais un message d'erreur ! C'est toujours pénible un script qui s'arrete en plein milieu et qui ne dit pas l'erreur !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Nickel

    MErci

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

Discussions similaires

  1. Exécution d'un script shell sous perl
    Par ysahel dans le forum Langage
    Réponses: 1
    Dernier message: 12/08/2012, 10h39
  2. Script shell ou perl
    Par Jinkas dans le forum Programmation et administration système
    Réponses: 5
    Dernier message: 24/12/2010, 08h01
  3. écrire dans un script shell depuis perl
    Par painouch21 dans le forum Langage
    Réponses: 1
    Dernier message: 10/02/2008, 14h03
  4. Problème script korn shell
    Par ptiboua dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/12/2007, 13h24
  5. création script korn shell de recopie de fichiers
    Par jeje4 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 29/03/2007, 07h38

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