我使用fabric连接到远程主机,当我在那里时,我尝试调用我创建的脚本(它解析我在参数中给出的文件)。但是当我从我的Fabfile.py内部调用脚本时,它假设我给出的路径是从我启动fabfile的机器(所以不是我的远程主机)
在我的fabfile.py中我有:
Import import servclasse
env.host='host1'
def listconf():
#here I browes to the correct folder
s=servclasse.Server("my.file") #this is where I want it to open the host1:my.file file and instanciate a classe from what it parsed
如果我这样做,它会尝试从servclass.py所在的文件夹中打开该文件。有没有办法提供一条远程路径"在争论?我宁愿不下载文件。
在调用之前我应该使用operation.put
上传脚本servclasse.py吗?
编辑:更多信息 在我的服务中,我有这个:
def __init__(self, path):
self.config = ConfigParser.ConfigParser(allow_no_value=True)
self.config.readfp(open(path))
答案 0 :(得分:0)
函数open()
是问题所在。
我想出了如何做到这一点,所以我会把它放在这里,以防有人有一天读到这个话题:
def listconf():
#first I browes to the correct folder then
contents = StringIO.StringIO()
get("MyFile",contents)
contents.seek(0)
s=Server(contents)
并在servclass.py
中def __init__(self, objfile):
self.config = ConfigParser.ConfigParser(allow_no_value=True)
self.config.readfp(objfile)
#and i do my stuffs