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 :
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
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%
et voici l'erreur retournée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 C:\......\plink.exe -ssh -pw *** ***@*** ./do_make DeleteRating_pthread
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ./do_make[21]: oraenv: not found.
Alors voici la solution (horrible certes) que j'ai trouvé en demandant à droite et à gauche :
(Au passage j'ai piqué ça d'un script initialement conçu pour telnet, donc j'ai pas changé tous les noms...)
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
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.
Partager