1

我似乎无法弄清楚这一点,但是当我对 localhost 进行非常简单的测试以让结构执行此命令run('history')时,命令行上的结果输出为空白。

这也行不通:run('history > history_dump.log')

这是下面完整的 FabFile 脚本,显然我在这里遗漏了一些东西。

-- FabFile.py

    从 fabric.api 导入运行、环境、主机、角色、并行、CD、任务、设置、执行
    从 fabric.operations 导入本地,放置

    部署类型=“本地”

    如果(部署类型==“本地”):
        env.roledefs = {       
            '初始':['127.0.0.1'],
            '网络服务器':['127.0.0.1'],
            'dbservers':['127.0.0.1']
        }

    env.use_ssh_config = False

    # 获取历史
    #------------------------------------------------ ----------------------------------
    @任务        
    @角色('初始')    
    def showHistoryCommands():
         print("登录 %s 并访问命令历史" % env.host_string)
         run('history') #不显示任何东西
         run('history > history_dump.log') #不写任何东西

         print "完成显示命令历史"

任何建议/解决方案都将受到欢迎。

4

1 回答 1

3

History 是一个内置的 shell,所以它不像普通命令那样工作。我认为您最好的选择是尝试从文件系统中读取历史文件。

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

替换适当的历史文件路径。

经过一些研究后扩展一点,该命令在运行时成功,但由于某种原因,fabric 既不捕获也不打印输出。或者历史打印输出的方式。而 env 等其他内置命令可以正常工作。所以现在我不知道到底发生了什么。

于 2012-11-24T11:51:19.460 回答