如何在fabric(python部署工具)中的远程主机上创建新文件?
我想在远程主机上创建一个名为 Passenger_wsgi.py 的文件。我想使用以下字符串来创建文件的内容:
'''
import sys, os
sys.path.insert(0, "/ruby/%s/www/%s/django-projects")
sys.path.insert(0, "/ruby/%s/www/%s/django-projects/project")
import django.core.handlers.wsgi
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
application = django.core.handlers.wsgi.WSGIHandler()
''' % (user,host,user,host)
用户和主机变量将是结构函数的参数。
我对 python 中的任何类型的文件操作都是新手,但我也不太确定 Fabric 中的程序应该是什么。我应该在本地创建文件,然后使用 Fabric 的 put 命令上传它(然后删除本地版本)吗?我应该使用适当的 bash 命令(使用 Fabric 的运行)在远程主机上创建文件吗?如果是这样,那么最好如何处理字符串中的所有“和” - 织物会逃脱它吗?或者我应该以某种不同的方式解决这个问题?
I'd like to create a file with the name passenger_wsgi.py on a remote host. I'd like to use the following string to create the file's content:
'''
import sys, os
sys.path.insert(0, "/ruby/%s/www/%s/django-projects")
sys.path.insert(0, "/ruby/%s/www/%s/django-projects/project")
import django.core.handlers.wsgi
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
application = django.core.handlers.wsgi.WSGIHandler()
''' % (user,host,user,host)
The user and host variables would be parameters of the fabric function.
I'm a total newbie to any sort of file manipulation in python, but also I'm not really sure what the procedure should be in fabric. Should I be creating the file locally and then uploading it with fabric's put command (and removing the local version afterwards)? Should I be creating the file on the remote host with an appropriate bash command (using fabric's run)? If so, then how is it best to deal with all the " and ' in the string - will fabric escape it? Or should I be tackling this in some different manner?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
将 StringIO 与 put 一起使用:
Use StringIO with put:
您可以使用 fabric.contrib.files
You could use
append()
orupload_template()
functions from fabric.contrib.files我所做的是将文件本地化为“app.wsgi.template”之类的文件。
然后,我在文件中使用标记,例如:
我使用 Fabric 将文件“放置”到远程主机,然后使用“sed”(或 Python 中的等效函数)来替换“$HOST$”和“$USER$” “具有我想要的值的令牌。
What I do is have the file locally as something like "app.wsgi.template".
I then use tokens in the file, like:
I use fabric to "put" the file over to the remote host, then use "sed" (or equivalent functions in Python) to replace the "$HOST$" and "$USER$" tokens with the values I want.
带 put 的 StringIO 只需进行一点编辑即可工作。尝试以下操作:
如果您遇到权限问题,请尝试以下操作:
StringIO with put works with a little bit of editing. Try this:
if you have an issue with permissions, try this: