我有这个简单的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示例的文档,链接已损坏。
答案 0 :(得分:0)
环境,请确保您正在使用您的环境。我建议你使用virtualenv
,看起来像这样:
virtualenv .env
(不要在你的src文件夹中执行此操作,如果它应该是一个目录,请不要将其检查到源代码管理中)source .env/bin/activate
然后安装您的依赖项:
pip install fabric
然后这是重要的部分:
./.env/bin/fab -f src/test/resources/scripts/test.py execute