2013-02-18 51 views
2

我試圖從遠程主機下載文件,遠程路徑依賴於shell變量。結構 - 有沒有辦法擴展shell變量?

>>> with settings(host_string = '[email protected]'): 
    get('$ORACLE_HOME/network/admin/tnsnames.ora') 

它拋出一個錯誤:

Fatal error: get() encountered an exception while downloading '/home/user/$ORACLE_HOME/network/admin/tnsnames.ora' 

Underlying exception: 
    No such file 

有沒有辦法,要求shell變量擴展?

回答

1

您可以使用fabric.operations.run()

from fabric.operations import run 

oracle_path = run('echo $ORACLE_PATH', shell=True) 

with settings(host_string = '[email protected]'): 
    get(os.path.join(oracle_path, 'network/admin/tnsnames.ora')) 
+0

這一工程!不管怎麼說,因爲我在Windows上,試圖從Unix獲取一個文件,'os.path.join'給了我一個混合路徑'/home/oracleclient/client.x86 \ network/admin/tnsnames.ora'是不正確的,所以我只是簡單地使用'oracle_path +'/ network/admin/tnsnames.ora'。 – Emmanuel 2013-02-18 08:37:26

+1

@Emmanuel:在這種情況下,你可以使用'posixpath'而不是'os.path'。 – jfs 2013-02-18 08:41:58

+0

確實,我不知道這個!謝謝 ! – Emmanuel 2013-02-18 10:00:26

相關問題