Python结构调用脚本"远程路径"

时间:2016-04-11 14:26:01

标签: python fabric

我使用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))

1 个答案:

答案 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