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 :

[sed] Problème crontab


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 97
    Par défaut [sed] Problème crontab
    Bonjour,

    Je me heurte à un petit souci depuis quelques jours, je n'arrive pas à trouver l'astuce permettant de faire fonctionner ce que je veux.

    J'ai un script bash (script_automate_calendrier.sh) qui contient plusieurs choses.
    A l'intérieur de ce script j'ai un sed qui cherche et remplace tous les accents par leurs lettre respectives non accentuées.

    Le script fonctionne bien quand je le lance depuis un bash.
    Mais si je le programme avec crontab, alors il ne fonctionne plus, et après vérification c'est le sed qui foire.

    J'ai donc redirigé la sortie d'erreurs pour voir ce qui se passait, et j'obtiens ce message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed: -e expression #1, char 82: strings for `y' command are different lengths
    Je comprends qu'il me dit qu'il faut que les deux chaines de remplacement soient de même taille (normal), seulement elles sont de la même taille, et ce script marche quand je le lance à la main.

    Quelqu'un aurait une idée?

    Voilà le bout de script fautif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #!/bin/bash
    sed "y/àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ/aaceeeeiioouuAACEEEEIIOOUU/" < fichier_entree > fichier_sortie 2>erreur
    Merci d'avance

  2. #2
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Bonjour,

    Il semble qu'il y ait une différence entre "exécuter à la main" et "exécuter par cron".

    Alors d'abord, le user est-il le même? Parce que si c'est un cron root, alors il faut faire les tests sous root! Et donc vérifier s'il y a les mêmes LANG et LC_ALL.

    Pas d'autre idée pour l'instant.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 97
    Par défaut
    Bonjour,

    Oui, les utilisateurs sont les mêmes, donc de ce côté là pas de problème.
    En effet il semble qu'il y'ai une différence entre le cron et l'exécution à la main, mais je n'arrive pas à savoir laquelle.

    D'instinct, je dirais qu'il y'a un problème avec les séparateurs "/" dans la commande sed, car il dit que les deux parties ne sont pas de la même taille.
    Le souci, c'est que je ovis pas comment y remédier.

  4. #4
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Juste en passant,

    On peut utiliser n'importe quel caractère comme séparateur. Au lieu de /, @ par exemple: sed -e 'y@...@...@' ... doit aussi bien fonctionner. Cool lorsqu'il y a des chemins à modifier.

    Moi d'instinct, je dirais que certains caractères ne sont pas affichés dans l'environnement de cron; c'est la raison pour laquelle il indiquerait que les deux chaines n'ont pas la même longueur. Tu devrais essayer avec des chaines de caractères normaux, genre minuscules - majuscules, pour voir s'il y a toujours ce p@#$%n de problème.

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 30
    Par défaut
    Oui, essayer avec des caractères "plus standards" est un très bon test.

    Ma première idée en lisant ton script est une différence de codage.

    Peut-être que l'environnement de cron utilise par défaut un codage UTF-8 et ton terminal fait autrement (ou le contraire). ça expliquerait pourquoi il se trompe dans le décompte du nombre de caractères.

    Cyril.

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 97
    Par défaut
    Effectivement mcoolive, il semble bien que ce soit un problème d'encodage.
    Mais du coup je ne sais pas comment faire pour remédier à cela.
    Quelqu'un a une idée?

    Merci de votre aide en tout cas

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 97
    Par défaut
    Bon, alors j'ai réglé deux problèmes d'un coup
    J'ai transformé l'encodage du script en iso, et ça fonctionne. (merci iconv)
    Du coup, j'ai même plus besoin de transformer au préalable le fichier que je devait traiter en utf-8, ça enlève une étape.

    Merci beaucoup

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

Discussions similaires

  1. [SED]-problème syntaxe sed
    Par tipié dans le forum Administration système
    Réponses: 2
    Dernier message: 05/02/2010, 16h50
  2. problème : Crontab chaque minute
    Par diabli73 dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 03/10/2008, 18h58
  3. MRTG et crontab : problème d'actualisation des données
    Par superjoe dans le forum Administration système
    Réponses: 2
    Dernier message: 06/05/2007, 13h45
  4. Réponses: 13
    Dernier message: 24/10/2006, 14h17
  5. Problème avec la commande sed
    Par JUSTIN Loïc dans le forum Linux
    Réponses: 2
    Dernier message: 05/09/2006, 10h17

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