1

これを理解することはできないようですが、ローカルホストに対して非常に簡単なテストを実行してファブリックにこのコマンドrun('history')を実行させると、コマンドラインの出力は空白になります。

また、これも機能しません:run('history> history_dump.log')

以下に完全なFabFileスクリプトを示します。明らかに、ここに何かが欠けています。

--FabFile.py

    ファブリック.apiからインポート実行、環境、ホスト、役割、並列、CD、タスク、設定、実行
    ファブリックから.operationsimportlocal、put

    deployType = "LOCAL"

    if(deploymentType == "LOCAL"):
        env.roledefs = {       
            '初期':['127.0.0.1']、
            'webservers':['127.0.0.1']、
            'dbservers':['127.0.0.1']
        }

    env.use_ssh_config = False

    #履歴を取得
    #------------------------------------------------- ------------------------------------
    @タスク        
    @roles('initial')    
    def showHistoryCommands():
         print( "%sにログインしてコマンド履歴にアクセスする"%env.host_string)
         run('history')#何も表示しません
         run('history> history_dump.log')#何も書き出さない

         print"コマンド履歴の表示が完了しました"

どんな提案/解決策も大歓迎です。

4

1 に答える 1

3

履歴はシェルの組み込みであるため、通常のコマンドのようには機能しません。ファイルシステムから履歴ファイルを読み取ってみるのが最善の策だと思います。

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

適切な履歴ファイル パスに置き換えます。

いくつかの調査の後に少し拡張するために、コマンドは実行時に成功しますが、何らかの理由で、ファブリックが出力をキャプチャまたは印刷しません。または、履歴が出力を印刷する方法。env などの他の組み込みコマンドは正常に機能します。そのため、今のところ、正確に何が起こっているのかわかりません。

于 2012-11-24T11:51:19.460 に答える