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

Programmation et administration système Perl Discussion :

Empecher un retour de script


Sujet :

Programmation et administration système Perl

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Points : 11
    Points
    11
    Par défaut Empecher un retour de script
    Bonjour,

    Voila, je me suis fait un petit script me permettant de tester si ma connexion MySQL est toujours active ou non et dans ce cas, en cas de retour, je redémarre un logiciel.

    Je suis débutant sur PERL, donc je ne connais pas encore toutes les astuces de ce langage ...

    Voici le code qui me pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    my $dbh = DBI->connect( "DBI:mysql:database=$database;host=$hostname", $login, $mdp ) 
    		or panneSQL("Impossible de se connecter au serveur MySQL");
     
    	if ( $sqlError == 1 ) {
    		unlink( $f_mysql ) ;
    		my $retour = system( "/etc/init.d/xxxxxxxx restart" ) ;
    		sendMail() ;
    		die "";
    	}
    Ce script tourne en CRON. Le problème, c'est que dés lors que le script m'envoie un email, j'ai aussi le retour de script de mon crontab :

    Dans le cas où la connexion MySQL ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBI connect('database=XXXXXXX;host=XXXXXXX','XXXXXXXXXX',...) failed: Access denied for user 'XXXXXXXXXXX'@'%' to database 'XXXXXXXXXX' at /home/XXXXXXXXX/perl/checkStart line 83 Died at /home/XXXXXXXXXX/perl/checkStart line 38.
    En cas de retour de la connexion MySQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Stopping XXXXXXX: M4UClient/etc/init.d/XXXXXXX: line 39: start-stop-daemon: command not found .
    Starting XXXXXXX: XXXXXXX/etc/init.d/XXXXXXX: line 30: start-stop-daemon: command not found  failed!
    Died at /home/XXXXXXX/perl/checkStart line 90.
    Je ne sais pas comment faire pour rendre muet PERL sans le passer en DAEMON ... En plus, il aime pas executer un script shell de restart ...

    Merci d'avance pour votre aide.

  2. #2
    Membre éclairé Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Points : 876
    Points
    876
    Par défaut
    Salut,

    Alors 4 remarque à faire dans un premier temps:

    1) déja quand je vois ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Stopping XXXXXXX: M4UClient/etc/init.d/XXXXXXX: line 39: start-stop-daemon: command not found .
    Starting XXXXXXX: XXXXXXX/etc/init.d/XXXXXXX: line 30: start-stop-daemon: command not found  failed!
    Died at /home/XXXXXXX/perl/checkStart line 90.
    je me dis que ça part mal ...

    2) peut on voir ta crontab ?

    3) tu unlink quoi la ?

    4) ici ta variable ne sert a rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $retour = system( "/etc/init.d/xxxxxxxx restart" ) ;
    si tu veux récupérer l'état utilise plutot qx{} au lieu de system().

    A partir de la on pourra travailler .

    Cdlt

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Pour le point 1 :

    Quand je lance la commande manuellement, elle se lance correctement, j'ai jamais eu de soucis, maintenant, quand je la lance a partir de PERL, elle n'a pas l'air d'aimer ...

    Pour le point 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    * * * * * /home/XXXXXXXX/perl/checkStart
    Pour le point 3 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $f_mysql = "/home/XXXXXXXX/perl/rapport" ;
    C'est un fichier qui se créer en cas de perte de la connexion, pour qu'au prochain cron, le script effectue un test supplémentaire. C'est un fichier texte bidon.

    Pour le point 4 :

    En fait, espéré stocker le message de retour du script du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Stopping XXXXXXX.
    Starting XXXXXXX.

  4. #4
    Membre éclairé Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Points : 876
    Points
    876
    Par défaut
    alors ajoute ceci dans ta crontab pour qu'il se "taise":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     * * * * * /home/XXXXXXXX/perl/checkStart >/dev/null 2>&1
    ensuite utilise bien qx{} et dis nous ce que ça donne.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Impécable, je ne reçois plus de mail dû au CRON.

    Pour le lancement de commande, j'ai QX mais le restart FAILED. Voici le retour que je reçois par mail :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Retour: Stopping XXXClient: XXXClient.
    Starting XXXClient: XXXClient failed!
    Pourquoi un script qui se lance normalement, ne se lance pas via un autre script ? Quelle est la différence ?

  6. #6
    Membre éclairé Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Points : 876
    Points
    876
    Par défaut
    Bon déja on avance, a je vais quitter le taff donc je ne pourrais plus répondre mais as tu regarder les permissions de ton script?

    Cdlt.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Problème corrigé !

    Il fallait rajouter dans le SHELL qui faisait le restart :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PATH=/usr/sbin:/usr/bin:/sbin:/bin:/etc/init.d
    Tout marche bien. Un grand merci messinese ;-)

Discussions similaires

  1. [CSS] Empecher le retour à la ligne dans une cellule
    Par pekka77 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 26/02/2009, 16h50
  2. Empecher un retour en arriére
    Par fraizas dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/07/2007, 11h30
  3. empecher le retour à la page précédente
    Par ozzmax dans le forum Langage
    Réponses: 1
    Dernier message: 24/08/2006, 17h28
  4. Réponses: 6
    Dernier message: 07/06/2006, 19h00
  5. Empecher le retour a la ligne d'un rxrichEdit
    Par seb_homme_parfait dans le forum Composants VCL
    Réponses: 3
    Dernier message: 29/10/2005, 23h43

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