Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.virtualbox_5_2.*;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- import java.util.stream.Stream;
- /**
- * Documentation: https://download.virtualbox.org/virtualbox/5.2.8/SDKRef.pdf
- */
- public class Host {
- private static final String VIRTUAL_BOX_SERVER_URL = "http://localhost:18083";
- private static final String USER = "bohdana";
- private static final String PASSWORD = "140993dana";
- private static final String MACHINE_TO_RUN = "Windows 8.1 (64 - bit)";
- private static final String SNAPSHOT_TO_START = "automation_start";
- private static final String GUEST_USER = "DanaKuzub";
- private static final String GUEST_PASSWORD = "140993dana";
- private static final String BUILD_URL = "https://aegis-win.s3.amazonaws.com/setup-aegis-2.4.4-267-x86_64-offline.exe";
- public static void main(String[] args) throws IOException, InterruptedException {
- final Process process = new ProcessBuilder("C:\\Program Files\\Oracle\\VirtualBox\\VBoxWebSrv.exe").start();
- final VirtualBoxManager mgr = VirtualBoxManager.createInstance(null);
- mgr.connect(VIRTUAL_BOX_SERVER_URL, USER, PASSWORD);
- final IVirtualBox virtualBox = mgr.getVBox();
- final ISession session = mgr.getSessionObject();
- List<IMachine> machines = virtualBox.getMachines();
- for (IMachine machine : machines) {
- System.out.println(String.format("Name: %s; OS: %s; State: %s", machine.getName(), machine.getOSTypeId(), machine.getState()));
- }
- final IMachine machine = virtualBox.findMachine(MACHINE_TO_RUN);
- Runtime.getRuntime().addShutdownHook(new Thread(() -> {
- if (machine.getState() == MachineState.Running) {
- IProgress prog = session.getConsole().powerDown();
- prog.waitForCompletion(10000);
- session.unlockMachine();
- } else {
- System.out.println(MACHINE_TO_RUN + " is already powered off");
- }
- mgr.cleanup();
- process.destroy();
- }));
- ISnapshot snapshot = machine.findSnapshot(SNAPSHOT_TO_START);
- machine.lockMachine(session, LockType.Shared);
- machine.restoreSnapshot(snapshot).waitForCompletion(-1);
- IProgress vmProcess = session.getMachine().launchVMProcess(session, "gui", null);
- vmProcess.waitForCompletion(-1);
- IGuestSession guestSession = session.getConsole().getGuest().createSession(GUEST_USER, GUEST_PASSWORD, "", "");
- guestSession.waitFor(1L, 60 * 1000L);
- System.out.println("Guest session is created");
- guestSession.directoryCreate("C:\\Users\\DanaKuzub\\Desktop\\automation_resources\\", 0L, new ArrayList<>());
- guestSession.fileCopyToGuest("C:\\Users\\Bohdana\\Downloads\\test_for_automation.txt", "C:\\Users\\DanaKuzub\\Desktop\\automation_resources\\", new ArrayList<FileCopyFlag>());
- IGuestProcess guestProcess = guestSession.processCreate(
- "C:\\Windows\\system32\\cmd.exe",
- new ArrayList<>(),
- new ArrayList<>(),
- Stream.of(ProcessCreateFlag.WaitForProcessStartOnly).collect(Collectors.toList()),
- 0L
- );
- guestProcess.waitFor(1L, 60 * 1000L);
- System.out.println("CMD pid: " + guestProcess.getPID());
- Thread.sleep(60 * 1000);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement