2017-09-02 2 views
0

Ich habe diese Datei, die ich als ein Prozess verwendet, um Zeichenfolgen während der Bereitstellung zu ersetzen. Die Ausführung erfolgt remote über Fabric-Skript.String ersetzen in Ubuntu Python funktioniert nicht

old_string = '"{}"'.format('$CONFIG_DIR') 
new_string = '"{}"'.format('$CONFIG_DIR --logfile /var/www/' + domain_name + '/logs/transmission.log') 
run('python deployment/monkey_patch.py /etc/default/transmission-daemon '+ old_string + ' ' + new_string) 

Anstatt die alte Zeichenfolge durch die neue Zeichenfolge zu ersetzen, wird die gesamte Datei durch einige ungültige Werte der neuen Zeichenfolge ersetzt.
Ich habe sogar die Datei in mein Windows-env kopiert und genau dieselben Schritte wiederholt und es funktioniert aber auf Ubuntu. Die ganze Zeit bin ich root-Benutzer und sowieso ist es etwas in die Datei schreiben, so ist es nicht Erlaubnis Problem auch.

Ich habe diese Datei für eine andere Zeichenfolge und Datei versucht und es funktioniert.

old_string = 'debian-transmission' 
new_string = 'www-data' 
run('python deployment/monkey_patch.py /etc/init.d/transmission-daemon '+ old_string + ' ' + new_string) 

Ich vermute, es ist etwas, mit dem Dollarzeichen und Fabric-Modul zu tun, aber ich kann nicht genau herauszufinden. Jeder hat Ahnung?

Antwort

0

Es ist die Art und Weise Fabric ausführen Befehle z. /bin/bash -l -c "Your commands goes here"

Das Angeben der Zeichenfolge innerhalb des Befehlsbereichs verursachte das Problem. Im Wesentlichen ist es das String-Zitat-Problem. Es wurde mit Rohren gelöst.

import pipes 
old_string = pipes.quote('$CONFIG_DIR') 
new_string = pipes.quote('$CONFIG_DIR --logfile /var/www/' + domain_name + '/logs/transmission.log') 
Verwandte Themen