关于python:Fabric脚本在成功时不打印输出

Fabric script doesn't printing output on success

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
8
9
10
11
import sys
from fabric.api import *

env.hosts = ['my.host.com']
env.user = 'myuser'
env.password = 'mypassword'
# env.shell = '/bin/bash -l -c'

def deploy():
    x = run("cd /srv/proj/")
    print x.__dict__

我尝试登录到远程shell并执行这个简单的cd命令。虽然它表明没有错误

1
2
[my.host.com] run: cd /srv/proj/
{'succeeded': True, 'return_code': 0, 'failed': False, 'command': 'cd /srv/proj/', 'stderr': '', 'real_command': '/bin/bash -l -c"cd /srv/proj/"'}

但当我在cd命令后执行run('ls')时,它只打印文件,但肯定有文件。所以这里发生了什么。除此之外,我在执行手动设置命令(我的意思是.bashrc文件中的别名)时遇到问题。面料采用/bin/bash -l -c ...。我如何克服这些障碍。

我用的是Ubuntu 14.04

附:和os.chdir不一样。


你可以试试with cd

1
2
3
4
def deploy():
    with cd("/srv/proj/"):
        x = run("ls")
    print(x)