通过结构轻击文件时出错

时间:2014-10-15 22:47:53

标签: python fabric

我正在尝试编写一个结构任务,该任务会覆盖包含从内部标识到外部标识的映射的文件。一旦我得到了这些信息,我可以在部署期间用它做几件事。但是,我陷入了第一步。我确定我错过了一些明显的东西。这是失败的当前函数:

def mapFromIntId(intId):
  sudo('grep -i "%s" /data/ids/*' % intId)

当我运行时,我收到以下错误:

[10.19.4.188] Executing task 'mapFromIntId'
[10.19.4.188] sudo: grep -i "79959cfe" /data/ids/*

Fatal error: sudo() received nonzero return code 1 while executing!

Requested: grep -i "79959cfe" /data/ids/*
Executed: sudo -S -p 'sudo password:'  /bin/bash -l -c "grep -i \"79959cfe\" /data/ids/*"

Aborting.
Disconnecting from 10.19.4.188... done.

它看起来是正确的,如果我自己运行显示的命令它工作正常。这需要几秒钟,因为id文件相当大。但它确实完成了。

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

Grep在许多不同情况下返回非零退出代码。从手册页:

  

退出状态        grep实用程序以下列值之一退出:

 0     One or more lines were selected.
 1     No lines were selected.
 >1    An error occurred.

所以你在这里有一个非匹配的退出代码。只需使用上下文管理器并将该部分设置为warn_only

from fabric.api import settings, run

def test(path):
    with settings(warn_only=True):
        return run('grep ...')

价: