Fabric Python run命令不显示远程服务器命令“history”

时间:2012-11-22 06:29:06

标签: python shell command fabric

我似乎无法解决这个问题,但当我对localhost执行一个非常简单的测试以使结构执行此命令运行('history')时,命令行上的结果输出是空白的。

这也不会起作用: run('history> 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"

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

1 个答案:

答案 0 :(得分:3)

历史记录是内置的shell,因此它不像普通命令那样工作。我认为最好的办法是尝试从文件系统中读取历史文件。

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

替换相应的历史文件路径。

在进行一些研究后稍微扩展一下,该命令在运行时会成功,但出于某种原因,无论是结构还是捕获或打印输出。或者历史记录打印输出的方式。而像env这样的其他内置命令工作得很好。所以现在我不知道到底发生了什么。