Le ls | grep doit être exécuté sur la machine distante.
C'est bien ça?
Tout à fait, je met sert de ce que me renvoie le ls | grep comme argument pour la commande rm. Le tout devant être exécuté sur la machine distante.
Plus précisément, la chaîne que tu recherches est-elle "'\<${d}'" ou bien '\<${d}' ou bien \<${d} ou bien <${d} ???
Plus précisément encore, est-ce le caractère '\' suivi du caractère '<' ou bien une expression régulière pour dire "début de mot" ?
Le "\<" correspond bien à une regex signifiant "début du mot". Et le pattern que je cherche dans le début du mot est le contenu de la variable ${d}, autrement dit, la date actuelle - une semaine.
Personnellement, ayant rencontré des comportements différents entre 'grep' et 'egrep', je tends à n'utiliser que fgrep ou egrep, mais aussi rarement que possible 'grep'.
La commande ls|grep fonctionne parfaitement lorsque je l’exécute depuis le serveur distant.
Le problème actuel est que lorsque je l'exécute à distance:
/usr/bin/ssh test@Test "mv /data/xen/domains/vmFreeNAS/vmFreeNASStorage.img /data/xen/domains/vmFreeNAS/${d}_vmFreeNASStorage.img.old && rm `ls /data/xen/domains/vmFreeNAS/ |grep -v ${grepstatement} | grep '\>.img.old'`"
les variables $d et $grepstatement sont bien remplacées par leurs valeurs, mais le rm et le ls s’exécutent en local.
Lorsque j’exécute les solutions apportées par Julien Sanchez :
1 2 3
| /usr/bin/ssh test@Test "mv /data/xen/domains/vmFreeNAS/vmFreeNASStorage.img /data/xen/domains/vmFreeNAS/${d}_vmFreeNASStorage.img.old && rm \$(ls /data/xen/domains/vmFreeNAS/ |grep -v \${grepstatement} | grep '\>.img.old')"
ou
/usr/bin/ssh test@Test "mv /data/xen/domains/vmFreeNAS/vmFreeNASStorage.img /data/xen/domains/vmFreeNAS/${d}_vmFreeNASStorage.img.old && "'rm `ls /data/xen/domains/vmFreeNAS/ |grep -v ${grepstatement} | grep "\>.img.old"`' |
Les commande rm et ls s'éxecutent bien sur le serveur distant mais la variable ${grepstatement} est interprétée comme une chaîne de caractère et n'est donc pas remplacée par sa valeur.
Le problème se trouve au niveau de la syntax des " ' et des caractères à échapper je pense.
Partager