通过JAVA执行Fabric脚本

时间:2015-11-24 17:17:38

标签: java runtime fabric

我有这个简单的fab脚本,我想通过JAVA执行此操作:

    from __future__ import with_statement
    from fabric.api import *
    from fabric.contrib.console import confirm
    env.hosts = ['localhost']

    def updatefile():
     with shell_env(TERM='vt100'):
    with cd('/Users/'):
    run("pwd")
    run("ls -l")

    def execute():
      updatefile()

当我从命令行执行此脚本时,它可以工作:fab -f test.py执行但我想通过java执行。试过......

public class ExecuteScript {

@Test
public void testExecuteScript() throws NumberFormatException, IOException{

    StringBuffer output = new StringBuffer();
    Process p;
    try {
        p = Runtime.getRuntime().exec("fab -f src/test/resources/scripts/test.py execute");
        p.waitFor();
        BufferedReader reader = 
                new BufferedReader(new InputStreamReader(p.getInputStream()));

        String line = "";           
        while ((line = reader.readLine())!= null) {
            output.append(line + "\n");
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println(output.toString());
}
}   

它不起作用..查看http://fabric8.io/gitbook/quickstarts.html中java示例的文档,链接已损坏。

1 个答案:

答案 0 :(得分:0)

环境,请确保您正在使用您的环境。我建议你使用virtualenv,看起来像这样:

  1. virtualenv .env(不要在你的src文件夹中执行此操作,如果它应该是一个目录,请不要将其检查到源代码管理中)
  2. source .env/bin/activate
  3. 然后安装您的依赖项:

    1. pip install fabric
    2. ?你需要什么。
    3. 然后这是重要的部分:

      ./.env/bin/fab -f src/test/resources/scripts/test.py execute