Skip to main content
Version: 10.3

Automate command-line applications

The example below shows how to run commands on a remote RPA Agent machine. Pay attention to how you can execute Groovy code remotely.

The example runs the ping -n 3 google.com command and fetches all the console output.

import com.workfusion.odf2.compiler.BotTask;
import com.workfusion.odf2.core.task.AdHocTask;
import com.workfusion.odf2.core.task.TaskInput;
import com.workfusion.odf2.core.task.output.TaskRunnerOutput;
import com.workfusion.odf2.core.webharvest.rpa.RpaDriver;
import com.workfusion.odf2.core.webharvest.rpa.RpaFactory;
import com.workfusion.odf2.core.webharvest.rpa.RpaRunner;
import com.workfusion.rpa.driver.Driver;
import org.slf4j.Logger;
import javax.inject.Inject;
import java.awt.dnd.DragGestureEvent;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import static com.workfusion.rpa.helpers.Script.executeGroovyScript;

@BotTask(requireRpa = true)
public class AutomateCommandLineApplications implements AdHocTask {
private final RpaRunner rpaRunner;
private final Logger logger;

@Inject
public AutomateCommandLineApplications(RpaFactory rpaFactory, Logger logger){
this.rpaRunner = rpaFactory
.builder(RpaDriver.UNIVERSAL)
.closeOnCompletion(true)
.build();
this.logger = logger;
}

@Override
public TaskRunnerOutput run(TaskInput taskInput) {

rpaRunner.execute(driver->{
try {
this.commandLineApp(driver);
} catch (IOException e) {
throw new RuntimeException(e);
}
});

return taskInput.asResult()
.withColumn("example_bot_task_output", "completed_successfully");
}

private void commandLineApp(Driver driver) throws IOException {

String console_script = "import java.io.BufferedReader; \n"+
"import java.io.InputStreamReader; \n" +
"String command = \"ping -n 3 google.com\" ; \n"+
"StringBuffer output = new StringBuffer(); \n" +
"Process p; \n" +
"try { \n" +
"p = Runtime.getRuntime().exec(command); \n" +
"p.waitFor(); \n" +
"BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); \n" +
"String line = \"\"; \n" +
"while ((line = reader.readLine())!= null) { \n" +
" output.append(line " + "\n" + "); \n" +
"} \n" +
"} catch (Exception e) { \n"+
" e.printStackTrace(); \n" +
"} \n" +
"return output;" ;


StringBuffer scriptResult =(StringBuffer) executeGroovyScript(console_script);
logger.debug(" Script Result " + scriptResult);
File path = new File("C:\\Users\\sshukla\\Desktop\\New folder\\pingResult.txt");
FileWriter wr = new FileWriter(path);
wr.write(scriptResult.toString());
wr.flush();
wr.close();

}

}