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 :

Script bug en cron mais pas en lancement manuel


Sujet :

Linux

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Points : 275
    Points
    275
    Par défaut Script bug en cron mais pas en lancement manuel
    Bonjour, voilà j'ai un script qui est chargé (notamment grâce à sed) de transformer un fichier CSV en requetes SQL.
    Quand je le lance manuellement, tout fonctionne bien.
    Par contre dès que j'automatise le lancement avec cron, là j'ai qque chose de bizare : tous les "é" (e avec accent), qui sont censés être transformés en "e" (sans accent) sont transformés en "ee".
    Exemple :
    Prénom --> Prenom (en lançant le script manuellement)
    Prénom --> Preenom (en lançant le script via Cron)

    Evidement cela donne des requetes SQL fausses puisque le champ Preenom n'existe pas!
    Une idée??
    merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Points : 275
    Points
    275
    Par défaut
    Voilà mon script :
    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
    70
    71
    72
    73
    #!/bin/sh
    #
     
     
    #Initialisation
    table="Formation"
    HOME=/home/adullact/Formation
    HOSTNAME=`hostname`
    file=$HOME/../Formation.txt
    GENERATION=$HOME/Fichiers
     
    if [ ! -d $HOME ];then
            mail -s "Erreur Import $table $HOSTNAME" sabrina.toulouse@adullact-projet.coop <<-EOM
            `date`
            Erreur : l'arborescence a ete modifiee et ne correspond plus au script.
            EOM
     
            exit 1
    fi
     
    if [ ! -f $file ];then
     
            mail -s "Erreur Import $table $HOSTNAME" sabrina.toulouse@adullact-projet.coop <<-EOM
            `date`
            Erreur : le fichier .txt n'existe pas ou n'est pas au bon emplacement.
            EOM
            exit 1
    fi
     
    # variables
    pompier1="1"
    pompier2="2"
    id=0
    export id
    utf8=$HOME/tmp/lutece.utf8
    formationtri=$HOME/tmp/lutece.tri
     
     
    #Conversion en UTF8
    if (file $file |grep 8859 >/dev/null); then
            iconv --from=ISO-8859-15 --to=UTF-8 2>/dev/null < $file > $utf8
            file="$utf8"
    fi
     
    #Traitement, stockage et suppression de la 1e ligne
    head=$(head -n 1 $file |sed -e "s/ /_/g" -e "s/^/INSERT INTO \`$table\`\(\`/" -e "s/;/\`,\`/g" -e "s/$/\`\) VALUES/" -e "s/'/\\\`/g" -e "s/[éêèë]/e/g" -e "s/[ùü]/u/g" -e "s/ç/c/g" -e "s/à/a/g")
     
    sed 1d $file | sort -b -f -i -u > $formationtri
    file="$formationtri"
     
    #Traitement des quotes
    sed -i "s/'/ /g" $file
     
    #Boucle
    cat $file | while read line
    do
            pompier2="`echo $line |cut -d ";" -f 4`"
            pompier2all=`echo $line | sed -e "s/^/\('/" -e "s/[éêèë]/e/g" -e "s/[ôö]/o/g"  -e "s/[ùü]/u/g" -e "s/ç/c/g" -e "s/à/a/g" -e "s/#EMPTY//g" -e "s/ 00:00:00//g" -e "s/;/','/g" -e "s/$/'\),/" -e "/''/s|'','\([^,]*\)'),$|'00/00/0000','\1'),|" -e "/''/s|'','\(.*\)'),$|'-','\1'),|"`
     
            if (test "$pompier1" = "$pompier2")
            then
                    echo $pompier2all >>$GENERATION/$table.$id.sql
            else
                    [ -f $GENERATION/$table.$id.sql ] && sed -i '$s/,$/;/' $GENERATION/$table.$id.sql
                    id=$(( $id + 1 ))
                    echo $head > $GENERATION/$table.$id.sql
                    echo $pompier2all >>$GENERATION/$table.$id.sql
                    pompier1=$pompier2
            fi
    done
    count=$(ls -l $GENERATION/$table.*.sql |wc -l)
    sed -i '$s/,$/;/' $GENERATION/$table.$count.sql
    rm -f $utf8 $formationtri

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 111
    Points : 142
    Points
    142
    Par défaut
    cron supprime les variables d'environnement
    il est possible que ton bug vienne d'un changement d'encoding du a un changement de locale par tes variables d'environnement perso
    Michaël Hooreman

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Points : 275
    Points
    275
    Par défaut
    Cela ne sous-entendrai pas qu'avant de lancer le script manuellement je définirai une variable d'environnement?
    Je n'utilise pas Linux depuis longtemps, mais il me semble que pour cela il faut que je définisse manuellement cette variable dans la console non?

  5. #5
    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 kahya Voir le message
    Cela ne sous-entendrai pas qu'avant de lancer le script manuellement je définirai une variable d'environnement?
    Je n'utilise pas Linux depuis longtemps, mais il me semble que pour cela il faut que je définisse manuellement cette variable dans la console non?
    Non par exemple PATH (par exemple pour trouver mail) est setter par ton shell (/etc/bash* par exemple)
    Tu peux utiliser env qui affiche toutes les variables d'environement (par exemple dans ton shell et dans le script lance depuis le cron pour faire un diff)

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Points : 275
    Points
    275
    Par défaut
    En effet, manuellement j'ai la variable LANG=fr_FR.UTF-8 et elle n'existe pas lors du cron.

    Je vais la définir dans le script

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Points : 275
    Points
    275
    Par défaut
    Ok ça fonctionne merci beaucoup!

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

Discussions similaires

  1. Script marche en local mais pas en ligne
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 10/07/2008, 15h51
  2. [XHTML] Bug sur IE mais pas sur FF !
    Par Chichouille dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 01/12/2007, 15h29
  3. Bug sous IE mais pas sous Firefox ni Opera..
    Par Kher78 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/08/2007, 16h08
  4. Bug sous FireFox! mais pas sous IE!
    Par adri5656 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 01/04/2007, 12h15
  5. [AJAX] Script qui plante IE mais pas Firefox
    Par Booyakha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/05/2006, 18h40

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