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 :

Déterminer si un script est exécuté par la crontab ou "à la main"


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 156
    Points : 97
    Points
    97
    Par défaut Déterminer si un script est exécuté par la crontab ou "à la main"
    Bonjour,

    Je voudrais savoir s'il existe un moyen de détecter, dans un script shell, si celui-ci est exécuté par un utilisateur "à la main" ou automatiquement, par la crontab.

    Le but final, est de rajouter un avertissement au début de mon script au cas où un utilisateur l'exécute à un autre moment que ce qui est planifié dans la crontab.


    Merci d'avoir pour vos lumières.

  2. #2
    Membre confirmé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Points : 490
    Points
    490
    Par défaut
    Bonjour,

    Il peut y avoir un grand nombre de processus nommés cron.

    Tu peux définir une variable d'environnement unique dans ta crontab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RUNNINGFROMCRON=1
     
    16 18 * * *     /usr/local/bin/crontest
    Je l'ai testé avec ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #! /bin/bash
     
    echo " running script "
     
    echo -n "testing for var: "
    echo $RUNNINGFROMCRON
    Lorsqu'il est executé par la crontab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    running script 
    testing for var: 1
    Et l'inverse executé par le terminal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    running script 
    testing for var:

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 156
    Points : 97
    Points
    97
    Par défaut
    J'étais focalisé sur la recherche d'une commande compliquée, j'en ai perdu de vue la simplicité...

    Merci pour cette réponse simple, mais super efficace !

  4. #4
    Membre confirmé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Points : 490
    Points
    490
    Par défaut
    Je t'en prie

  5. #5
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 303
    Points : 12 802
    Points
    12 802
    Par défaut
    Bonjour,

    Sinon, il suffit de regarder aussi le type de terminal...

    D'ailleurs, selon le type, ou la non définition du terminal pourrait te permettre quand il est vraiment utile d'afficher ton message d'alerte.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 586
    Points : 19 469
    Points
    19 469
    Par défaut
    Bonjour,

    vérifier que stderr est ouvert dans un terminal :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    test -t 2 && echo "${0##*/} : ERR: message..."

    edit :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    test -t 2 && echo "${0##*/} : ERR: message..." >&2
    bah, oui ! à quoi ça sert de vérifier si stderr est dispo, si c'est pour ne pas s'en servir !!!

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 156
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    vérifier que stederr est ouvert dans un terminal :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    test -t 2 && echo "${0##*/} : ERR: message..."

    Merci pour cette autre solution, ça me permettrait de ne pas avoir à rajouter de variable dans ma crontab.
    J'ai l'embarras du choix, ça fait plaisir !

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

Discussions similaires

  1. Script php exécuté par crontab
    Par Shenron114 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 05/11/2007, 16h54
  2. Réponses: 1
    Dernier message: 16/11/2006, 14h01
  3. mon script vbs est bloqué par l'antivirus
    Par nsaybi dans le forum VBScript
    Réponses: 4
    Dernier message: 03/11/2006, 11h05
  4. Exécuter un script, une fois par jour
    Par Poussy-Puce dans le forum ASP
    Réponses: 1
    Dernier message: 19/10/2006, 16h55

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