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 :

activation de service


Sujet :

Programmation et administration système Perl

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut activation de service
    Bonjour,

    je voudrais savoir comment je peux savoir si un service est installé sous Linux est le démarrer le cas échéant et tout cela en perl.

    Le service en question est en fait Mysql.

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    La manière de démarrer un service varie d'une distribution à l'autre (en supposant que tu as installé mysql via un package de ta distbib). Fait comme tu ferais à la main.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut
    En ligne de commande je sais le faire (sans parler de distribution particulière) mais je ne sais pas comment je peux récupérer l'état d'un service avec des commandes perl dans script et ensuite les traiter.

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Citation Envoyé par Chicard Voir le message
    En ligne de commande je sais le faire (sans parler de distribution particulière) mais je ne sais pas comment je peux récupérer l'état d'un service avec des commandes perl dans script et ensuite les traiter.
    J'avais fait ça à une époque chez moi sur mon Linux.

    Lance la commande UNIX t'affichant la liste des services tournant actuellement sur ta machine (avec un p'tit grep qui va bien pour ne ressortir que les lignes concernant mysql). Fait travailler les expressions régulières sur le résultat retourné et à toi de jouer ensuite pour savoir s'il faut ou non lancer le démon de mysql



    PS : si ça peut attendre, je crois que j'ai encore mon script Perl quelque part à la maison, je ne peux rien dire de concret avant ce soir

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Citation Envoyé par Chicard Voir le message
    En ligne de commande je sais le faire (sans parler de distribution particulière) mais je ne sais pas comment je peux récupérer l'état d'un service avec des commandes perl dans script et ensuite les traiter.
    Dis nous comment tu fais à la main, on te dira comment faire ça en Perl. Sinon on va perdre du temps à parler dans le vide.

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut
    Ce serait sympa de voir ton ancien script perl si tu le retrouves en moins de deux jours car plus tard mon projet sera fini.

    (Faire un projet en trois jours en formation c'est pas cool )

  7. #7
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    +1 avec Matafan

    Retourne nous les éléments suivants STP :

    - la syntaxe exacte de la commande que tu tapes dans une console UNIX pour afficher la liste des process mysql actifs
    - le résultat (fais un copié/collé) retourné dans la console
    - la syntaxe de démarrage de ton sgbd

    Edit :

    Pour t'aider un peu, voici un rapide bout de code à mettre à jour selon tes besoins bien évidemment :

    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
    use strict;
    use warnings;
     
    eval
    {
    	$_ = `ta commande UNIX pour afficher les services tournant ICI`;
    };
    die("pb en utilisant la commande UNIX : $@\n") if ($@);
     
    if ($_ =~ /mysql/i) # à peaufiner éventuellement
    {
    	print "Le démon tourne\n";
    }
    else
    {
    	print "Démon non lancé\n";
    	system("commande mysql pour lancer le SGBD");
    }
    Les caractères ` dans la ligne $_ = ` ... s'obtiennent avec la touché 7 du pavé alphanumérique de ton clavier.

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    grp3-proxy:~# ps aux | grep mysql
    root      3627  0.0  0.1   3892  1304 ?        S    11:13   0:00 /bin/sh /usr/bin/mysqld_safe
    mysql     3758  0.0  1.6 127392 16180 ?        Sl   11:13   0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
    root      3760  0.0  0.0   3004   608 ?        S    11:13   0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
    root      3790  0.0  0.1   3500  1212 tty1     T    11:22   0:00 man mysql
    root      3835  0.0  0.1   3500  1208 pts/0    T    11:43   0:00 man mysql
    root      3890  0.0  0.0   3144   768 pts/0    S+   12:10   0:00 grep mysql
    Ceci est sous Debian. Manque de chance Debian ne possède pas la commande service nom_du_service status que l'on pet trouver sous CentOS (découlant de RedHat)

    Pour la syntaxe de la commande démarrage, je la connais pas encore en débian, désolé.

  9. #9
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     /etc/init.d/mysql
    Usage: /etc/init.d/mysql start|stop|restart|reload|force-reload|status

  10. #10
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Ok, alors en adaptant mon code, ça doit donner ceci :

    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
    use strict;
    use warnings;
     
    eval
    {
    	$_ = `ps aux | grep mysql`;
    };
    die("pb en utilisant la commande UNIX : $@\n") if ($@);
     
    if ($_ =~ /mysqld .+basedir.+user=mysql/i)
    {
    	print "Le démon tourne\n";
    }
    else
    {
    	print "Démon non lancé\n";
    	system("mysql start");	# pas sûr de la commande ici
    }
    A tester

  11. #11
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut
    Merci pour l'aide apporté. Je ne ferme pas le sujet pour l'instant car je dois faire des manip avant de voir si cela fonctione.


    Arioch au vu du post précédent le tiens je pense que la commande est:

    system("/etc/init.d/mysql start");

    mais comme toi ce n'est pas sûr.

  12. #12
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Citation Envoyé par Chicard Voir le message
    Arioch au vu du post précédent le tiens je pense que la commande est:

    system("/etc/init.d/mysql start");

    mais comme toi ce n'est pas sûr.
    Il me semble me souvenir que c'est cette commande là sous mon ancienne Mandrake 10.1

  13. #13
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    J'ai retrouvé mon code

    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
    use strict;
     
    # Ne doit etre lancé qu'en root !
    chomp($_ = `whoami`);
    if ($_ ne "root")
    {
    	print "Ce programme doit etre lancé par \"root\" et non par \"$_\" !\n";
    	exec ("su");
    }
     
    # On vérifie si le démon tourne déjà ou pas
    $_ = `ps ax | grep mysql`;
    if ($_ && $_ =~ /\/usr\/sbin\/mysqld/)	# si le démon est actif, on l'arrete
    {
    	eval { $_ = `/etc/rc.d/init.d/mysql stop`; };
    	die "Eval : erreur d'arret du démon\n" if ($@);
    	print "\a$_";
    }
    else	# lancement du démon
    {
    	eval { $_ = `/etc/rc.d/init.d/mysql start`; };
    	die "Eval : erreur de lancement du démon\n" if ($@);
    	print "\a$_";
    }
    exit;
    Mon script me servait à l'époque pour démarrer ou couper le démon automatiquement.

  14. #14
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut
    Je viens de voir que je pouvais voir les champs de ma table avec les commandes SQL mises dans Perl.

    Je voudrais savoir s'il est possible d'avoir le même style de présentation ( ASCII style ) que celui de cette page à la section D ou plus bas toujours en passant par Perl.

  15. #15
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Pour répondre à ta question (à moins que je ne sois hors sujet), tu peux piloter beaucoup de choses de ta base de données en Perl en utilisant le module DBI.pm dans ton script Perl.

    Tu pourrais, depuis un script Perl, te connecter à ta BDD, lui poser des requètes SQL + ou - complexes, récupérer le résultat, travailler sur ce résultat (ou pas ), mettre à jour ta base, etc.

    PS : maintenant, à partir d'une console UNIX, il me semble qu'il est possible, en une seule ligne de commande, de se connecter à la bdd, lui poser une question simple du style "show databases" ou "show tables" et d'avoir le résultat dans la console en retour. Si c'est le cas, alors oui, en Perl tu pourras exécuter cette commande et en récupérer ce qu'elle t'aura retourné. Un peu comme dans le script que j'ai publié hier soir

  16. #16
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut
    Tu as du répondre quand je modifiais mon message (ou pas). Pour le show tables , j'ai trouvé la "solution" et j'ai bien mes champs qui s'affiche dans la console.

    Si tu as déjà utilisé mysql en console sous linux quand tu fais un show tables tu te retrouves avec un tableau "desiné" en ASCII (lignes =_ et colonnes = |).

    C'est le style d'affichage que je cherche à avec mon show tables sous Perl car il m'affiche tous mes champs les uns en dessous des autres et c'est pas agréables à voir (en même temps j'en ai pas 15000 j'en ai que 5 pour mes tests mais faut savoir être exigeant)

  17. #17
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Citation Envoyé par Chicard Voir le message
    C'est le style d'affichage que je cherche à avec mon show tables sous Perl car il m'affiche tous mes champs les uns en dessous des autres et c'est pas agréables à voir (en même temps j'en ai pas 15000 j'en ai que 5 pour mes tests mais faut savoir être exigeant)
    Montre nous ton code dans lequel, via Perl, tu fais ton show tables et tu récupères le résultat

    Et sinon, quels vont être tes autres besoins vis-à-vis de ta BDD MySql ?

  18. #18
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut
    Voici le code:
    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
    #! /usr/bin/perl
     
    use DBI;
    use strict;
     
    my $db = "DBI:mysql:informations_parc:localhost";
    my $utilisateur = 'root';
    my $mdp = 'administrateur';
     
    my $dbconnect = DBI->connect($db, $utilisateur, $mdp);
     
    my $query="describe test";
    my $sql=$dbconnect->prepare($query);
    $sql->execute();
    while (my $row=$sql->fetchrow_arrayref)
            {
             print join("\t",@$row),"\n";
            }
     
    $dbconnect->disconnect;
    exit;
    et le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cpu     varchar(255)    NO
    carte mere      varchar(255)    NO
    catre video     varchar(255)    NO
    carte son       varchar(255)    NO
    alimentation    varchar(255)    NO
    Mon retour et bon mais je préfèrerais avoir un retour qui ressemble à ça;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    +--------------+--------------+------+-----+---------+-------+
    | Field        | Type         | Null | Key | Default | Extra |
    +--------------+--------------+------+-----+---------+-------+
    | cpu          | varchar(255) | NO   |     | NULL    |       |
    | carte mere   | varchar(255) | NO   |     | NULL    |       |
    | catre video  | varchar(255) | NO   |     | NULL    |       |
    | carte son    | varchar(255) | NO   |     | NULL    |       |
    | alimentation | varchar(255) | NO   |     | NULL    |       |
    +--------------+--------------+------+-----+---------+-------+
    Ceci ne servira que pour mes test ensuite ça disparaitra de mon code.

    Ce que je vais faire c'est lire un fichier ligne par ligne faire un imoprt dans mysql des divers champs (code Perl) puis faire de la consultations de tables par requete sql (hors code Perl)

  19. #19
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Ok, il va te falloir changer ton print join (...) en printf dans ton code pour pouvoir le formater comme tu le désires.

    Pour te donner un petit exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @_ = ("cpu","varchar(255)","NO");
     
    print "| ";
    printf("%10s | ", $_[0]);
    printf("%15s | ", $_[1]);
    printf("%5s |\n", $_[2]);
    Produit à l'affichage ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    |        cpu |    varchar(255) |    NO |

  20. #20
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut
    Merci pour vos aides.

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

Discussions similaires

  1. [VS2003] Impossible d'activer des services requis pour l'installation
    Par 166BORAIZOL dans le forum Visual Studio
    Réponses: 1
    Dernier message: 16/03/2007, 09h10
  2. Activation du service connexion sans fil
    Par Zetophe dans le forum Windows XP
    Réponses: 3
    Dernier message: 26/10/2006, 08h33
  3. [MFC] -> Activation de service
    Par Nergaahl dans le forum MFC
    Réponses: 3
    Dernier message: 08/03/2006, 23h26
  4. Activer un service avec Delphi
    Par Coussati dans le forum API, COM et SDKs
    Réponses: 10
    Dernier message: 22/12/2005, 06h02
  5. Script pour activer le service WMI
    Par log1c dans le forum Windows
    Réponses: 3
    Dernier message: 30/11/2005, 15h11

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