2016-04-11 5 views
-1

Я использую ткань для подключения к удаленному хосту, когда я там, я пытаюсь вызвать скрипт, который я создал (он анализирует файл, который я даю в аргументе). Но когда я называю сценарий внутри моего Fabfile.py, это предполагает, что путь, который я дал от машины я запустить fabfile из (так не моего удаленного хоста)Сценарий вызова Python «удаленный путь»

В моем 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. Есть ли способ дать «удаленный путь» в аргументе? Я бы предпочел не загружать файл. Должен ли я загружать скрипт servclasse.py с помощью operation.put перед его вызовом?


Edit: подробнее В моей servclasse я это:

def __init__(self, path): 
    self.config = ConfigParser.ConfigParser(allow_no_value=True) 
    self.config.readfp(open(path)) 
+0

Я пытался использовать 'ткань .contrib.files.append', чтобы добавить в пустой файл 'run ('cat my.file')', но я не могу заставить его работать. Может ли это быть решением? – pwnsauce

+0

Пожалуйста, разместите часть своего внешнего скрипта ('servclasse.py'), связанного с вашей проблемой. – fernandezcuesta

ответ

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