pythonfabric

Easy way to suppress output of fabric run?


I am running a command on the remote machine:

remote_output = run('mysqldump --no-data --user=username --password={0} database'.format(password))

I would like to capture the output, but not have it all printed to the screen. What's the easiest way to do this?


Solution

  • It sounds like Managing output section is what you're looking for.

    To hide the output from the console, try something like this:

    from __future__ import with_statement
    from fabric.api import hide, run, get
    
    with hide('output'):
        run('mysqldump --no-data test | tee test.create_table')
        get('~/test.create_table', '~/test.create_table')
    

    Belows is the sample results:

    No hosts found. Please specify (single) host string for connection: 192.168.6.142
    [192.168.6.142] run: mysqldump --no-data test | tee test.create_table
    [192.168.6.142] download: /home/quanta/test.create_table <- /home/quanta/test.create_table