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

Scripts/Batch Discussion :

[Batch] Execution de script sur un serveur distant gràce à plink


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 25
    Points : 16
    Points
    16
    Par défaut [Batch] Execution de script sur un serveur distant gràce à plink
    Bonjour,

    Je cherche à concevoir un .bat avec les fonctionnalités suivantes :

    1) Copier un fichier de mon poste à un serveur unix distant (ssh/ftp).

    2) Compiler ce fichier en utilisant un script shell stocké sur ce serveur distant (ssh).

    Pour l'instant, je suis arrivé à mes fins (non sans mal) mais j'aimerais faire mieux. Je m'explique :

    1) Ce que j'ai est le code suivant qui fonctionne parfaitement et fait ce que je veux est le suivant :

    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
    @echo off
    set FTP_SERVER=hn481
    set USER=bpr1025
    set PASS=bpr1025
    
    set ftpcmd=ftpcmd.txt
    echo open %FTP_SERVER% > %ftpcmd%
    echo USER %USER% %PASS% >> %ftpcmd%
    echo bin >> %ftpcmd%
    echo cd user/agi/src >> %ftpcmd%
    echo put %1.pc >> %ftpcmd%
    echo quit >> %ftpcmd%
    echo bye >> %ftpcmd%
    FTP -i -v -n -s:%ftpcmd%
    del /Q %ftpcmd%
    2) le problème est pour la deuxième partie. J'avais tout d'abord tenté de le faire avec l’extension de PuTTy (plink) mais il y'a un problème. Voici la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\......\plink.exe -ssh -pw *** ***@*** ./do_make DeleteRating_pthread
    et voici l'erreur retournée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ./do_make[21]: oraenv: not found.
    qui est due au fait que l’exécution de cette façon ne tien pas compte du .profile associé au shell utilisé sur cette machine. Notamment, lorsque je me connecte avec PuTTy, cette commande fonctionne parfaitement.

    Alors voici la solution (horrible certes) que j'ai trouvé en demandant à droite et à gauche :

    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
    @rem ////// Editez les elements ci dessous concernant votre materiel
    @set tgateboxip=***
    @set tgateusername=***
    @set tgatepassword=***
    @set tgatecommand1=cd user/agi/src
    @set tgatecommand2=./do_make %1
    
    @rem ///// Ne plus rien modifier en dessous de cette ligne !
    
    @rem ///// Creation du script VBS pour connexion automatique
    @echo set sh=WScript.CreateObject("WScript.Shell")>>telnet.vbs
    @echo WScript.Sleep 500>>telnet.vbs
    @echo sh.SendKeys "%tgateusername%">>telnet.vbs
    @echo WScript.Sleep 500>>telnet.vbs
    @echo sh.SendKeys "~">>telnet.vbs
    @echo WScript.Sleep 500>>telnet.vbs
    @echo sh.SendKeys "%tgatepassword%">>telnet.vbs
    @echo sh.SendKeys "~">>telnet.vbs
    @echo WScript.Sleep 500>>telnet.vbs
    
    @rem ///// Lancement des commandes PuTTY
    @echo sh.SendKeys "%tgatecommand1%">>telnet.vbs
    @echo sh.SendKeys "~">>telnet.vbs
    @echo WScript.Sleep 500>>telnet.vbs
    @echo sh.SendKeys "%tgatecommand2%">>telnet.vbs
    @echo sh.SendKeys "~">>telnet.vbs
    @echo WScript.Sleep 500>>telnet.vbs
    
    @rem ///// Lancement de la session PuTTY
    @start /realtime c:\crelanapps\PuttyWinscp\putty060.exe %tgateboxip%
    @cscript //nologo telnet.vbs
    @del /q telnet.vbs
    
    :exit
    (Au passage j'ai piqué ça d'un script initialement conçu pour telnet, donc j'ai pas changé tous les noms...)

    Qui si j'ai bien compris, simule l'introduction de commande par un utilisateur. Notamment si pendant l'exécution je clique sur une autre fenêtre, il écrit les commandes dedans. Donc bref, cela fonctionne mais c'est vraiment bricolage et pas terrible.

    Ma question est la suivante : est-il possible de dire à plink de charger le .profile distant?

    Un grand merci,
    Albin.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Juste après avoir posté j'ai trouvé un truc qui à l'air prometteur permettant de se logger sur la machine et comme ça d'utiliser le .profile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PLINK.EXE -ssh machinename -l user -pw password bash -l -c 'echo $PATH'
    Néanmoins j'ai une autre erreur, il me dit que j'ai une erreur de syntaxe dans mon script..... Des idées? Peut-être qu'il ne charge pas le bon .profile?

    EDIT : Hop hop je trouve la solution en me parlant à moi-même, pratique .

    Donc j'ai avancé un peu, le do_make s'exécute en enlevant ce bout de code qui est là pour vérifier qu'on à bien introduit un nom de programme à compiler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if [[ $# -lt 1]] then
        echo "Error : need 1 parameter - program_name"
        exit 3
    fi
    Et en fait il râle sur la ligne du if. C'est vraiment étrange... Des idées? C'est pas spécialement indispensable mais c'est quand même bien lourd de devoir virer cette ligne...

    Je précise juste que ce n'est pas moi qui ai écrit ce script :p.

    Un grand merci,
    Albin.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Hophop résolu !

    Suffisait de mettre le then à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [[ $# -lt 1]] 
    then
        echo "Error : need 1 parameter - program_name"
        exit 3
    fi
    Quand même parfois c'est capricieux ! Enfin cela fonctionne je vous remercie de votre écoute attentive à mon monologue. Ça servira peut-être à d'autre :-).

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Hop pour mes prédécesseur on peut aussi faire la partie ftp avec pscp.exe avec une ligne de commande très semblable à celle de plink.exe.

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

Discussions similaires

  1. [DOS] Comment executer un script sur un serveur distant ?
    Par prgasp77 dans le forum FAQs Windows
    Réponses: 9
    Dernier message: 28/08/2009, 11h21
  2. [DOS] executer un script sur un serveur distant
    Par nikalkal dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 11/03/2007, 10h07
  3. [1.1] Executer un process sur un serveur distant
    Par maitrebn dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 27/02/2007, 18h02
  4. Réponses: 4
    Dernier message: 29/09/2006, 15h05
  5. Executer un script sur un PC distant
    Par Sendo dans le forum Réseau
    Réponses: 6
    Dernier message: 06/06/2006, 22h46

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