Quote Execute + Find pour le listing de fichier [Résolu] - Perl - Programmation
Marsh Posté le 04-03-2012 à 21:31:51
Ben et en changeant la valeur du timeout par défaut, ça donne quoi? 
timeout => xxx 
A+,
Marsh Posté le 05-03-2012 à 00:25:05
si je mets timeout => 30 
cela va me mettre 30sec à m'afficher le même résultat
Marsh Posté le 05-03-2012 à 01:50:11
De toute façon, la, ça ne vient pas du script, comme le prouve la ligne 
>> Quand je test ce même script sur autre serveur il fonctionne.  
Ça vient apparemment de ta configuration SSH, et j'ai pas de billes la dessus. 
A tout hasard, lances le script avec l'option 
debug => 1 
A+,
Marsh Posté le 05-03-2012 à 21:22:54
Bonsoir, 
 
Pour ma requête je vais laisser tomber ssh expect et le faire directement 
| Code : 
 | 
 
Ceci fonctionne bien, 
Cependant je voudrai trier la liste des fichiers trouvés pour ainsi ne récupérer que les 2 dernières concurrences. 
 
Comme si sur la machine je faisais en local un : 
| Code : 
 | 
 
 
Donc j'essaye tout bêtement d'intégrer mon ls -ltr dans mon find, mais cela ne fonctionne pas 
 
| Code : 
 | 
 
 
Une p'tite aide ne serait pas de refus ! 
Merci.
Marsh Posté le 05-03-2012 à 22:36:44
Pourquoi pas essayer de passer par un quote execute plutôt que les backticks? 
| Code : 
 | 
 
ou  
| Code : | 
 
A+,
Marsh Posté le 05-03-2012 à 22:48:07
Car je ne maîtrise pas du tout encore le quote execute, 
Cependant cela n'affiche pas le résultat escompté 
 
Il me dit: 
 
find: `/home/toto': No such file or directory 
 
Je précise que les fichiers sont bien présents et que ce message je l'ai déjà eu avec mes backticks 
Marsh Posté le 05-03-2012 à 23:17:08
Faut tester jusqu'a ce que ça passe, je suis trop grippé pour bien réfléchir ce soir. 
Je tenterais 
my $ls = qx{ssh toto\@srv-02 ls -ltr \`find /home/toto -maxdepth 1 -type f -name "TXT*" -mtime 0\`}; 
a tout hasard 
A+,
Marsh Posté le 06-03-2012 à 08:51:23
Je tente, je tente mais sans succès 
Du coup j'essaye de le faire directement dans le find, j'ai trouvé que le "-ls" était possible 
 
| Code : 
 | 
 
Mais hélas il me manque que le tri, et je n'ai pas trouvé dans le find de sort ou le fameux -ltr 
Marsh Posté le 06-03-2012 à 09:24:55
C'est bon cela fonctionne avec un simple sort 
 
| Code : 
 | 
 
 
Merci !
Marsh Posté le 06-03-2012 à 11:34:13
Un truc comme cela: 
| Citation : my $ls = `ssh toto\@srv-02 ls -ltr \`find /home/toto -maxdepth 1 -type f -name \"TXT*\" -mtime 0\``; | 
 
devait pas être très éloigné de la solution, car au vu d'une page web, les `dans un `doivent être escapés. 
Après, il faut voir ce qui doit être escapé ou pas dans le reste, " ou \" par exemple. 
A+, 
Marsh Posté le 07-03-2012 à 21:04:41
Merci Gilou, 
 
J'ai une dernière question 
Avec quote execute, est-ce que l'on peut entrer en paramètre le mot de pass du serveur distant? 
Ou bien est-on obligé de copier les clé rsa sur le serveur distant? 
 
Je dis ça car je travail sur un serveur Cisco là où il m'est impossible d'y copier les clés. 
Expect SSH est une bonne solution car je peux rentrer le login/pwd en paramètre
Marsh Posté le 07-03-2012 à 22:39:33
Dans le texte d'un quote execute, on peut mettre des variables perl, qui seront évaluées à l'exec. 
A+,
Marsh Posté le 04-03-2012 à 18:01:31
Bonjour,
Mon besoin est simple,
Depuis une machine je veux me connecter en ssh à une autre machine afin de récupérer une liste de fichier pour la traiter ensuite.
J'utilise SSH Expect
Quand je test ce même script sur autre serveur il fonctionne.
Quand je l'utilise sur le serveur cible, cela ne fonctionne pas à cause je pense d'un timeout?
Je requière donc votre aide pour trouver où cela coince.
Voici ce que j'obtiens en réponse:
Quand j'ouvre le fichier /usr/share/perl5/Expect.pm à la ligne 813 j'ai
Message édité par Sethenssen le 06-03-2012 à 09:28:24