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 :

[reseaux] exécution de commande à distance


Sujet :

Programmation et administration système Perl

  1. #1
    Membre du Club Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 66
    Points
    66
    Par défaut [reseaux] exécution de commande à distance
    Bonjour,

    J'ai cherché un peu partout mais je n'ai malheureusement pas trouvé... Alors je poste ici.

    Alors voila je voulais savoir s'il était possible de lancer une commande de test (par exemple `mysqltest`) sur une machine distante, en ne connaissant que le nom de la machine (tout au plus l'adresse IP)?

    Le but du programme est un script perl qui tourne sur une machine et qui permet de tester si des services (par exemple mysql, tomcat, open converter...), tournant sur des machines distantes fonctionnent normalement.

    Voila
    Merci d'avance
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants."
    St Ex.

    Philobedo

  2. #2
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    réponse courte : non

    réponse longue : oui, à condition d'avoir installé un ssh ou un telnet sur la machine distante.

    Ensuite, tu peux executer des commandes à distances, par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh -l <user> <machine> "<commande distante>"
    et donc en perl tu peux le lancer grâce à la commande system

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my $command = 'ssh -l <user> <machine> "<commande distante>"';
    my $result = system($command);
    print $result;

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    response complémentaire: le module IPC-PerlSSH automatise la chose de belle manière
    http://search.cpan.org/~pevans/IPC-PerlSSH/
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  4. #4
    Membre du Club Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 66
    Points
    66
    Par défaut
    Merci pour vos réponse les gars mais après avoir réfléchi un peu je pense que je vais dans la mauvaise direction...

    Comme je l'ai dit le but de la chose est de tester l'état de services sur des machines. Des services comme Tomcat, mysql, open office, des daemons, open converter...
    Donc en fait pour chacun de ces services il faut que mon script perl regarde sur le port correspondant. Par exemple pour Tomcat tester si le port 8080 de la machine XXX est bien ouvert...

    C'est pour ça que l'idée de SSH n'est pas envisageable... En plus je ne connais pas forcément un utilisateur et son mot de passe sur chaque machine distante...

    Je me replonge dedans... Mais si de votre coté vous avez encore des idées n'hésitez pas... ;-)

    Merci
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants."
    St Ex.

    Philobedo

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Salut, si tu es sur un réseau Windows, tu peux peut-être utilisé les call WMI.

    Je fais ça pour lancer des scripts sur des machines à distance. Voici la syntaxe:
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    use strict;
    use Win32::OLE qw( in );
    use Win32::OLE::Variant;
     
    ################################################################################
    #
    # Fonction: Cette fonction est utilisée pour exécuter une commande sur un serveur
    # distant.
    #
    # Retour: Retourne 1 si la commande a été exécuter avec succès, sinon retourne 0.
    #
    # Argument: 1- Le permier argument est l'adresse machine du serveur sur lequel on veut
    #           exécuter la commande.
    #           2- Reçoit comme deuxième argument la commande à exécuter.
    #           3- Reçoit finalement les arguments pour cette commande.
    #
    # Commentaire: exemple d'argument . "perl c:/PerlTest.pl" WWW
    #              Ceci permet de tester l'exécution d'un script sur notre poste.
    #
    # Mathieu Roy
    # 2006-05-11
    #
    ################################################################################
    sub ExecuterUneCommandeAvecWMI {
    	my $sMachine = "";
    	$sMachine = "." unless( $sMachine = shift @_ );
    	$sMachine =~ s#^[\\/]+## if( $ARGV[0] =~ m#^[\\/]{2}# );
    	# This is the WMI moniker that will connect to a machine's 
    	# CIM (Common Information Model) repository
    	my $CLASS = "WinMgmts:{impersonationLevel=impersonate}!//$sMachine";
    	# Get the WMI (Microsoft's implementation of WBEM) interface
    	my $WMI = Win32::OLE->GetObject( $CLASS ) || die "Unable to connect to \\$sMachine:" . Win32::OLE->LastError();
    	# Now get a Win32_Process class object...
    	my $Process = $WMI->Get( "Win32_Process" ) || die "Unable to get the process list:" . Win32::OLE->LastError();
    	# Create a BYREF variant (so a COM object can modify its value and
    	# return it to us.
    	my $vPid = Variant( VT_I4 | VT_BYREF, 0 );
    	# Now go ahead and create the new process using the Create() method
    	# off of the Win32_Process object
    	if( 0 == $Process->Create( join( " ", @_ ), undef, undef, $vPid ) )
    	{
    		return 1;
    	}
    	else
    	{
    		return 0;
    	}
    }
     
    Je l'appele comme suit: 
     
    if (ExecuterUneCommandeAvecWMI(X1X500,"\\\\a\\b\\c\\aspnet_setreg.exe", $sCommandeAExecuter) == 1 ) 
    {
    						$msDonneesFichierDeResultats .=  "ok";
    					}	
    					else
    					{
    						$msDonneesFichierDeResultats .=  "erreur...";
    					}	
    				}

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par philobedo
    Bonjour,

    J'ai cherché un peu partout mais je n'ai malheureusement pas trouvé... Alors je poste ici.

    Alors voila je voulais savoir s'il était possible de lancer une commande de test (par exemple `mysqltest`) sur une machine distante, en ne connaissant que le nom de la machine (tout au plus l'adresse IP)?

    Le but du programme est un script perl qui tourne sur une machine et qui permet de tester si des services (par exemple mysql, tomcat, open converter...), tournant sur des machines distantes fonctionnent normalement.

    Voila
    Merci d'avance


    utilise nagios

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Salut,

    et si on voulais ne pas tapez le pass,et qu'on le pass dans la commande ?

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

Discussions similaires

  1. commande dos à distance
    Par lesafir dans le forum VB.NET
    Réponses: 3
    Dernier message: 21/07/2008, 15h44
  2. Commande a distance
    Par A_B dans le forum Sécurité
    Réponses: 3
    Dernier message: 21/06/2007, 21h37
  3. Exécuter une commande Terminal à distance
    Par parp1 dans le forum Réseau
    Réponses: 12
    Dernier message: 04/02/2007, 15h28
  4. Exécution des commandes à distance
    Par diamonds dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 07/12/2006, 13h46

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