遇到问题赶上提示

时间:2012-11-21 15:46:18

标签: python fabric fexpect

我似乎没有得到预期的工作。我似乎无法抓住提示。

这就是我所拥有的:

with settings(hide('commands', 'warnings') , warn_only=True):
   prompts = expect('Are you sure you want to perform this operation? [Y/N]:', 'N')
   with expecting(prompts):
      run(sudo("/something.sh apply /some.file" , user="someuser"))

我很确定我做错了什么。

1 个答案:

答案 0 :(得分:0)

我已经用一些小的东西编辑了你的代码:

  1. expecting需要一个列表
  2. Fabric / Fexpect sudo()和run()不能嵌套。你可能只需要sudo()
  3. 您必须使用斜杠[]来转义正则表达式符号,例如\[,或者只是缩短'期望':

    prompts = []
    prompts += expect('Are you sure.*', 'N')
    with expecting(prompts):
        sudo("/something.sh apply /some.file" , user="someuser")
    
  4. 此外,您可能不应hide('commands'),具体取决于something.sh使用的提示。