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