2012-11-22 145 views
1

我似乎無法弄清楚這一個,但當我做一個非常簡單的測試本地主機讓織物執行此命令run('history') ,命令行上的結果輸出爲空。結構Python運行命令不顯示遠程服務器命令「歷史」

也將這項工作之一:運行(「歷史> history_dump.log」)

這裏是下面的完整FabFile劇本,很明顯我在這裏失去了一些東西。

- FabFile.py

 
    from fabric.api import run, env, hosts, roles, parallel, cd, task, settings, execute 
    from fabric.operations import local,put 

    deploymentType = "LOCAL" 

    if (deploymentType == "LOCAL"): 
     env.roledefs = {  
      'initial': ['127.0.0.1'], 
      'webservers': ['127.0.0.1'], 
      'dbservers' : ['127.0.0.1'] 
     } 

    env.use_ssh_config = False 

    # Get History 
    # ------------------------------------------------------------------------------------- 
    @task   
    @roles('initial')  
    def showHistoryCommands(): 
     print("Logging into %s and accessing the command history " % env.host_string) 
     run('history') #does not display anything 
     run('history > history_dump.log') #does not write anything out 

     print "Completed displaying the command history" 

任何建議/解決方案將是非常歡迎。

回答

3

歷史是一個shell內置的,所以它不像一個正常的命令。我認爲你最好的選擇是嘗試從文件系統中讀取歷史文件。

local('cat ~/.bash_history') 
     or 
run('cat ~/.bash_history') 

替換適當的歷史文件路徑。

在經過一番研究之後,稍微擴展一下,命令在運行時成功完成,但由於某種原因,結構既不能捕獲也不能打印輸出。或者歷史打印輸出的方式。雖然其他內置命令如env可以正常工作。所以現在我不知道到底發生了什麼。

+0

感謝xmonk,從來沒有想過我會像以前的shell內建函數一樣查看這些'命令'。我會試一試並報告我的發現... – JBAH007