1 votes

Comment déterminer si le vm de VirtualBox a terminé la restauration du snapshot ?

J'ai un hôte ubuntu et un invité Windows 10 utilisant virtualbox. Et j'ai écrit un bash script pour contrôler mon vm. Je veux arrêter mon vm et restaurer le snapshot, puis le redémarrer. Mais voici une question. Lorsque j'exécute le code comme ceci :

VBoxManage snapshot $vmid restore $snapshotname
VBoxManage startvm $vmid

Il y aura une erreur qui concerne la session vm qui est verrouillée après l'exécution de la deuxième commande.

Existe-t-il un code qui peut attendre que la restauration du snapshot du vm soit terminée ?

0voto

harrymc Points 394411

La solution simple sera d'ajouter une attente dans le script pour une durée suffisamment longue. temps pour que la restauration soit terminée.

La solution la plus complexe serait d'utiliser API principale de VirtualBox - Référence de l'interface IConsole dans un langage de programmation reconnu.

L'exemple C# suivant est tiré de l'article Comment restaurer un instantané avec l'API de virtualbox ? :

VirtualBox.VirtualBox virtualBox = new VirtualBox.VirtualBox();
IMachine vmMachine = virtualBox.FindMachine("Windows 8");
Session session = new Session();
vmMachine.LockMachine(session, LockType.LockType_Shared);
IConsole console = session.Console;

// Restore snapshot
ISnapshot snapShot = vmMachine.FindSnapshot("Snapshot 1");

IProgress snapShotProgress = console.RestoreSnapshot(snapShot);
snapShotProgress.WaitForCompletion(300000);

// unlock before launch VMProcess
session.UnlockMachine();

IProgress launchVmProgess = vmMachine.LaunchVMProcess(session, "gui", "None");

launchVmProgess.WaitForCompletion(300000);

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X