Bonjour à tous,
Le contexte nous devons modifier l'ensemble des vhost en ajoutant un nouveau paramètre SSL sur l'ensemble de nos serveurs.
Fabric fonctionne est très utile mais là je bloque.
Nous essayons de faire une commande sur fabric dont je ne trouve pas la solution et je ne suis pas sûr que cela soit réalisable depuis fabric.
la commande que nous souhaitont exécuter est la suivante:
find /tmp/ -type f -name '*.foo.fr' -print0| while IFS= read -r -d '' filename; do sed -i 's/<\/VirtualHost>/SSL xxxx\n<\/VirtualHost>/' $filename; done
sur bash pas de problème sa fonctionne en revanche sur fabric lors de l'exécution nous avons les messages suivant
[localhost] sudo: find /tmp/ -type f -name *.cacom.fr -print0| while IFS= read -r -d filename; do sed -i s/<\/VirtualHost>/SSL xxxx\n<\/VirtualHost>/ $filename; done
[localhost] out: sudo password:
[localhost] out: /bin/bash: /VirtualHost: Aucun fichier ou dossier de ce type
[localhost] out:
Warning: sudo() received nonzero return code 1 while executing 'find /tmp/ -type f -name *.cacom.fr -print0| while IFS= read -r -d filename; do sed -i s/<\/VirtualHost>/SSL xxxx\n<\/VirtualHost>/ $filename; done'!
Bizarement il est indiqué qu'il ne trouve pas /VirtualHost et pourtant c'est pas ce qui est demandé
Voici le bout de mon programme
sudo('find /tmp/ -type f -name ''*.foo.fr'' -print0| while IFS= read -r -d '' filename; do sed -i ''s/<\/VirtualHost>/SSL xxxx\n<\/VirtualHost>/'' $filename; done')
Nous avons essayé différentes syntaxes
sudo('find /tmp/ -type f -name ''*.foo.fr'' -print0| while IFS= read -r -d '' filename; do sed -i ''s/<\/VirtualHost>/SSL xxxx\\n<\/VirtualHost>/'' $filename; done')
sudo('find /tmp/ -type f -name ''*.foo.fr'' -print0| while IFS= read -r -d '' filename; do sed -i ''s/<\/VirtualHost>/SSL xxxx\n<\/VirtualHost>/'' $filename; done').succeeded
sudo('find /tmp/ -type f -name ''*.foo.fr'' -print0| while read -r -d '' filename; do sed -i ''s/<\/VirtualHost>/SSL xxxx\n<\/VirtualHost>/'' $filename; done')
sans succès
Votre aide est la bienvenue ;-)
# Échappement
Posté par Pouetpouet . Évalué à 1.
Ça ressemble fort à un échappement des guillemets,
j'ai cherché 30sec (je connais pas Fabric) mais peut-êre que ces liens pourront aider:
* [Fab-user] Problems escaping double and single quotes within run()
* Bug when scaping quotes in sed #567
# quote quote quotek
Posté par M.Poil (site web personnel) . Évalué à 2.
As-tu tenté?
sudo("""find /tmp/ -type f -name '*.foo.fr' -print0| while IFS= read -r -d '' filename; do sed -i 's/<\/VirtualHost>/SSL xxxx\n<\/VirtualHost>/' $filename; done""")
Voir forcer en "raw string"
sudo(r"""find /tmp/ -type f -name '*.foo.fr' -print0| while IFS= read -r -d '' filename; do sed -i 's/<\/VirtualHost>/SSL xxxx\n<\/VirtualHost>/' $filename; done""")
Is it a Bird? Is it a Plane?? No, it's Super Poil !!!
[^] # Re: quote quote quotek
Posté par hakhak91 . Évalué à 1.
Pour la première méthode sa ne fonctionne pas
Message d'exécution fabric.
Warning: sudo() received nonzero return code 1 while executing 'find /tmp/ -type f -name '*.cacom.fr' -print0| while IFS= read -r -d '' filename; do sed -i 's/<\/VirtualHost>/SSL xxxx
<\/VirtualHost>/' $filename; done'!
En revanche avec la seconde ligne sa fonctionne parfaitement
Merci!
# un run = une action
Posté par alendroi . Évalué à 1.
Bonjour,
Fabric inclu une fonction sed, deja pourquoi ne pas l'utiliser ?
Ensuite, pourquoi tout mettre dans un seul run et ne pas découper plus logiquement la tâche ?
Dire que vous vous n'en avez rien à faire de la vie privée parce que vous n'avez rien à cacher, c'est comme dire que vous n'en avez rien à faire de la liberté d'expression parce que vous n'avez rien à dire. Edward Snowden
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.