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 :

Exécuter un script à distance


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 76
    Par défaut Exécuter un script à distance
    Bonjour,

    Je souhaite exécuter un script qui se trouve sur une machine B depuis ma machine A. J'utilise une méthode execScript que j'ai mis en place. Un seul détail m'intrigue :
    Le script se trouve dans le chemin : $CLIENT_DIR/batchs/script.ksh
    Quand j'apelle ma fonction je dois lui passer la commande à éxécuter, est ce que si je passe ./$CLIENT_DIR/batchs/script.ksh ça devrait fonctionner ?

    Je me pose juste la question car je ne sais pas si avec une variable d'environnement comme $CLIENT_DIR le ./ fonctionne ou pas.

    Merci bq de votre aide.

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

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

    Cette demande n'a pas de sens.
    Le '.' signifie le répertoire courant.
    Il n'est pas possible de partir simultanément de l'emplacement désigné par la variable (exportée ou non) et le répertoire courant.
    Il faut choisir.

    Quelle est la fonctionnalité recherchée?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 76
    Par défaut
    Merci de ta réponse,

    En faite j'explique. Je développe une application Java / swing, qui lors d'un clic sur un bouton, va exécuter un script qui se trouve dans une machine linux distante. J'ustilise la fonction suivante pour exécuter mon script :
    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
     
    public static void execCommandWithArguments(String command,String user,String host,String password, String args) throws JSchException, IOException, InterruptedException{
    		Session session = getSSHSession(user, host, password);
    		Channel channel = session.openChannel("shell");
    		//Add the command execution end keyword
    		command +=" "+args;
    		command += END_COMMAND; 
    		File sshLogFile = new File(LOG_LOCATION);
    		sshLogFile.createNewFile();
    		sshLogFile.deleteOnExit();
    		FileOutputStream fileOutputStream = new FileOutputStream(sshLogFile);
    		channel.setOutputStream(fileOutputStream);
    		PipedInputStream pip = new PipedInputStream();
    		channel.setInputStream(pip);
    		PipedOutputStream pop = new PipedOutputStream(pip);
    		PrintStream print = new PrintStream(pop);
    		print.println(command);
    		channel.connect();
    		//Blocking method waiting for the command execution to end before close the ssh session  
    		waitForTheEnd(sshLogFile);	
    		channel.disconnect();
    	}
    Ma question est : je devrai mettre quoi dans l'argument commande pour exécuter mon script : sachant que lui se trouve sur le chemin : $CLIENTDIR/batches/script/ksh

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    La réponse brute est: Tu n'as pas d'argument variable donc il faut envoyer une chaîne vide "" en guise de args.

    Maintenant, tentons d'éclaircir certains points.

    • Un script ksh est un fichier texte interprété, soit par la commande ksh mon_script, soit en indiquant un shebang sur la première ligne #!/bin/ksh (auquel cas on peut exécuter le texte directement car il sait comment l'interpréter).
    • Le script doit avoir les droits d'exécution pour la personne qui le lance.
    • CLIENT_DIR est une variable dont on accède à la R-value par $CLIENT_DIR. Dans le programme java, aucune indication n'est donnée sur sa valeur. Est-elle fixée à la bonne valeur? Pour le savoir, un simple echo $CLIENT_DIR permet de savoir, si tu récupères le résultat de la commande.
    • La valeur de la variable sera remplacée. Ainsi $CLIENT_DIR/batchs/script.ksh donnera un truc du genre /home/production/batchs/script.ksh car $CLIENT_DIR égale /home/production
    • C'est l'argument java command qui doit contenir "$CLIENTDIR/batches/script.ksh".

Discussions similaires

  1. Exécuter un script à distance via ssh sur un serveur freesshd windows
    Par leon1983 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 03/04/2014, 19h40
  2. Réponses: 9
    Dernier message: 25/10/2005, 14h23
  3. [FLASH MX2004] Exécution de script PHP
    Par dleu dans le forum Flash
    Réponses: 2
    Dernier message: 30/03/2005, 19h10
  4. Réponses: 1
    Dernier message: 23/02/2005, 11h23
  5. Exécuter un script SQL
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/03/2004, 08h47

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