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 :

Problème avec un script lancé depuis Cron


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut Problème avec un script lancé depuis Cron
    Bonjour,

    J'ai un problème avec mon script que je ne comprends pas.
    J'ai essayé de simplifier au maximum mon script pour trouver mon erreur.

    J'essaie de joindre deux fichiers :
    Le premier fichier nommé fichier1.txt est de la forme :
    19263 192.168.1.1
    19264 192.168.1.10
    19265 192.168.1.3
    19266 192.168.1.153
    14687 192.168.1.65
    14788 192.168.1.25

    Mon second fichier nommé fichier2.txt est de la forme :
    z201058 192.168.1.153
    z201054 192.168.1.65
    z201194 192.168.1.1
    z201019 192.168.1.25
    z201001 192.168.1.10
    z201189 192.168.1.3

    Mon objectif est d'obtenir ce résultat :
    19263;z201194
    19264;z201001
    19265;z201189
    19266;z201058
    14687;z201054
    14788;z201019


    Lorsque je lance la commande suivante depuis mon teminal j'obtiens le bon résultat, c'est parfait.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    join -j 2 -o1.1,2.1 <(sort -k2 /tmp/fichier1.txt) <(sort -k2 /tmp/fichier2.txt) | sed 's/ /;/g'
    Maintenant, lorsque je lance le même script mais depuis l'outil Cron, j'obtiens cette erreur : "join: file 1 is not in sorted order"

    Avez-vous une idée ?

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    La différence principale entre la crontab et ton terminal est l'environnement : dans la crontab, celui-ci est vide.

    As-tu essayé de vérifier ce qui est exécuté via la crontab ? Est-ce que ton problème ne pourrait pas venir des 2 indirections du sort ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,
    Citation Envoyé par gangsoleil
    l'environnement : dans la crontab, celui-ci est vide.
    non pas "vide", mais minimal.

    et, en effet, il y a des chances que le shell utilisé par cron e soit pas /bin/bash, auquel cas les Substitutions de processus (et pas indirection, qui concerne les variables) ne fonctionneront pas.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut
    Le fait étrange est que j'utilise également un autre script avec la même commande mais pas les mêmes fichiers, et je n'ai aucun problème avec ce dernier.

    Cependant, pour un revenir au problème je ne comprends pas lorsque j'ai comme erreur que mon fichier1 n'est pas dans l'ordre trié.
    Il y a-t-il un moyen de debug cela ?

    Merci par avance,

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    Citation Envoyé par musha76 Voir le message
    je ne comprends pas lorsque j'ai comme erreur que mon fichier1 n'est pas dans l'ordre trié.
    Si tu tries selon la colonne 2, tu comprends bien que la colonne 1 est en désordre.

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    On peut aussi penser à awk :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ cat c1c2.txt
    19263 192.168.1.1
    19264 192.168.1.10
    19265 192.168.1.3
    19266 192.168.1.153
    14687 192.168.1.65
    14788 192.168.1.25
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ cat c2c3.txt
    z201058 192.168.1.153
    z201054 192.168.1.65
    z201194 192.168.1.1
    z201019 192.168.1.25
    z201001 192.168.1.10
    z201189 192.168.1.3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ awk '(FNR==NR){a[$2]=$1;next;} {print $0,a[$2];}' c1c2.txt c2c3.txt
    z201058 192.168.1.153 19266
    z201054 192.168.1.65 14687
    z201194 192.168.1.1 19263
    z201019 192.168.1.25 14788
    z201001 192.168.1.10 19264
    z201189 192.168.1.3 19265
    Ici, je ne traite pas le cas où le premier fichier a des entrées absentes dans le deuxième fichier.

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

Discussions similaires

  1. Problème avec script lancé par cron
    Par maximeh2 dans le forum Général Python
    Réponses: 2
    Dernier message: 28/07/2015, 15h34
  2. Réponses: 7
    Dernier message: 01/05/2011, 10h08
  3. [Configuration] Problème avec un script de login utilisant une session
    Par HNT dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/09/2005, 19h56
  4. Problème avec un script d'ouverture de pop-up
    Par HNT dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/08/2005, 16h37
  5. problème avec un script de generation de nom de login
    Par black_code dans le forum Langage
    Réponses: 2
    Dernier message: 04/08/2005, 13h51

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