(command.CommandList children: [ (C {<.>} {<'/lib/lsb/init-functions'>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-d>} {<'/usr/share/doc/virtualbox'>} {<-a>} {<-x>} {<'/usr/bin/VBoxHeadless'>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-r>} {<'/etc/default/virtualbox'>} {<Id.Lit_RBracket ']'>}) (C {<.>} {<'/etc/default/virtualbox'>}) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$SHUTDOWN_USERS'))} {<Id.Lit_Equals '='>} {(DQ <all>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHUTDOWN_USERS) op: assign_op.Equal rhs: {(DQ )} spids: [143] ) ] ) (command.ForEach iter_name: i iter_words: [{<'/tmp/.vbox-'> <Id.Lit_Star '*'> <-ipc>}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHUTDOWN_USERS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$SHUTDOWN_USERS') <' '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$i')}) (C {<cut>} {<-d> (SQ <->)} {<-f2>}) ] negated: F ) ) ) } spids: [162] ) ] ) ] ) ) ] spids: [123 140] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$LOAD_VBOXDRV_MODULE'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<1>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_success_msg>} {(DQ <'virtualbox disabled; edit /etc/default/virtualbox'>)}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] spids: [188 204] ) ] ) (command.ShFunction name: running body: (BraceGroup children: [ (command.Pipeline children: [(C {<lsmod>}) (C {<grep>} {<-q>} {(DQ ($ Id.VSub_Number '$1') <'[^_-]'>)})] negated: F ) ] ) ) (command.ShFunction name: start body: (BraceGroup children: [ (C {<log_begin_msg>} {(DQ <'Loading VirtualBox kernel modules...'>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children:[(C {<running>} {<vboxdrv>})] negated:T) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<modprobe>} {<vboxdrv>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [ {<find>} {<'/lib/modules/'> (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<uname>} {<-r>}) ) } {<-name>} {(DQ <vboxdrv> <Id.Lit_BadBackslash '\\'> <'.*'>)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<grep>} {<-q>} {<vboxdrv>}) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_failure_msg>} {(DQ <'No suitable module for running kernel found'>)} ) ] spids: [291 324] ) ] else_action: [ (C {<log_failure_msg>} { (DQ < 'modprobe vboxdrv failed. Please use \'dmesg\' to find out why' > ) } ) ] ) (C {<log_end_msg>} {<1>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [272 288] ) ] else_action: [(C {<log_progress_msg>} {(DQ <vboxdrv>)})] ) ] spids: [260 269] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [(C {<running>} {<vboxnetflt>})] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<modprobe>} {<vboxnetflt>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [ {<find>} {<'/lib/modules/'> (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<uname>} {<-r>}) ) } {<-name>} { (DQ <vboxnetflt> <Id.Lit_BadBackslash '\\'> <'.*'> ) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<grep>} {<-q>} {<vboxnetflt>}) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_failure_msg>} { (DQ <'No suitable vboxnetflt module for running kernel found'> ) } ) ] spids: [406 439] ) ] else_action: [ (C {<log_failure_msg>} { (DQ < 'modprobe vboxnetflt failed. Please use \'dmesg\' to find out why' > ) } ) ] ) (C {<log_end_msg>} {<1>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [387 403] ) ] else_action: [(C {<log_progress_msg>} {(DQ <vboxnetflt>)})] ) ] spids: [375 384] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [(C {<running>} {<vboxnetadp>})] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<modprobe>} {<vboxnetadp>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [ {<find>} {<'/lib/modules/'> (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<uname>} {<-r>}) ) } {<-name>} { (DQ <vboxnetadp> <Id.Lit_BadBackslash '\\'> <'.*'> ) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<grep>} {<-q>} {<vboxnetadp>}) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_failure_msg>} { (DQ <'No suitable vboxnetadp module for running kernel found'> ) } ) ] spids: [521 554] ) ] else_action: [ (C {<log_failure_msg>} { (DQ < 'modprobe vboxnetadp failed. Please use \'dmesg\' to find out why' > ) } ) ] ) (C {<log_end_msg>} {<1>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [502 518] ) ] else_action: [(C {<log_progress_msg>} {(DQ <vboxnetadp>)})] ) ] spids: [490 499] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children:[(C {<running>} {<vboxpci>})] negated:T) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<modprobe>} {<vboxpci>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [ {<find>} {<'/lib/modules/'> (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<uname>} {<-r>}) ) } {<-name>} {(DQ <vboxpci> <Id.Lit_BadBackslash '\\'> <'.*'>)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<grep>} {<-q>} {<vboxpci>}) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_failure_msg>} {(DQ <'No suitable vboxpci module for running kernel found'>)} ) ] spids: [636 669] ) ] else_action: [ (C {<log_failure_msg>} { (DQ < 'modprobe vboxpci failed. Please use \'dmesg\' to find out why' > ) } ) ] ) (C {<log_end_msg>} {<1>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [617 633] ) ] else_action: [(C {<log_progress_msg>} {(DQ <vboxpci>)})] ) ] spids: [605 614] ) ] ) (C {<log_end_msg>} {<0>}) ] ) ) (command.ShFunction name: stop body: (BraceGroup children: [ (C {<log_begin_msg>} {(DQ <'Unloading VirtualBox kernel modules...'>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<running>} {<vboxnetadp>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<rmmod>} {<vboxnetadp>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_failure_msg>} {(DQ <'Cannot unload module vboxnetadp'>)}) (C {<log_end_msg>} {<1>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [753 765] ) ] else_action: [(C {<log_progress_msg>} {(DQ <vboxnetadp>)})] ) ] spids: [743 750] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<running>} {<vboxnetflt>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<rmmod>} {<vboxnetflt>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_failure_msg>} {(DQ <'Cannot unload module vboxnetflt'>)}) (C {<log_end_msg>} {<1>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [813 825] ) ] else_action: [(C {<log_progress_msg>} {(DQ <vboxnetflt>)})] ) ] spids: [803 810] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<running>} {<vboxpci>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<rmmod>} {<vboxpci>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_failure_msg>} {(DQ <'Cannot unload module vboxpci'>)}) (C {<log_end_msg>} {<1>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [873 885] ) ] else_action: [(C {<log_progress_msg>} {(DQ <vboxpci>)})] ) ] spids: [863 870] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<running>} {<vboxdrv>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<rmmod>} {<vboxdrv>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_failure_msg>} {(DQ <'Cannot unload module vboxdrv'>)}) (C {<log_end_msg>} {<1>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [933 945] ) ] else_action: [(C {<log_progress_msg>} {(DQ <vboxdrv>)})] ) ] spids: [923 930] ) ] ) (C {<log_end_msg>} {<0>}) ] ) ) (command.ShFunction name: stop_vms body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<pidof>} {<VBoxSVC>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [1018 1031] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:wait) op: assign_op.Equal rhs: {<0>} spids: [1044] ) ] ) (command.ForEach iter_name: i iter_words: [{($ Id.VSub_DollarName '$SHUTDOWN_USERS')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-d>} {<'/tmp/.vbox-'> ($ Id.VSub_DollarName '$i') <-ipc>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<export>} {<Id.Lit_VarLike 'VBOX_IPC_SOCKETID='> (DQ ($ Id.VSub_DollarName '$i'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VMS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{<VBoxManage>} {<--nologo>} {<list>} {<runningvms>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [1086] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName '$VMS'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VMS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$VMS'))}) (C {<sed>} {<-e>} {(SQ <'s/^".*".*{\\(.*\\)}/\\1/'>)} ) ] negated: F ) ) } spids: [1127] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$SHUTDOWN'))} {<Id.Lit_Equals '='>} {(DQ <poweroff>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_action_msg>} { (DQ <'Powering off remaining VMs from user '> ($ Id.VSub_DollarName '$i') ) } ) (command.ForEach iter_name: v iter_words: [{($ Id.VSub_DollarName '$VMS')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<VBoxManage>} {<--nologo>} {<controlvm>} {($ Id.VSub_DollarName '$v')} {<poweroff>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:wait) op: assign_op.Equal rhs: {<10>} spids: [1206] ) ] ) ] ) ) ] spids: [1155 1172] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$SHUTDOWN'))} {<Id.Lit_Equals '='>} {(DQ <acpibutton>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_action_msg>} { (DQ < 'Sending ACPI power button event to remaining VMs from user ' > ($ Id.VSub_DollarName '$i') ) } ) (command.ForEach iter_name: v iter_words: [{($ Id.VSub_DollarName '$VMS')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<VBoxManage>} {<--nologo>} {<controlvm>} {($ Id.VSub_DollarName '$v')} {<acpipowerbutton>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:wait) op: assign_op.Equal rhs: {<30>} spids: [1264] ) ] ) ] ) ) ] spids: [1213 1230] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$SHUTDOWN'))} {<Id.Lit_Equals '='>} {(DQ <savestate>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_action_msg>} { (DQ <'Saving state of remaining VMs from user '> ($ Id.VSub_DollarName '$i') ) } ) (command.ForEach iter_name: v iter_words: [{($ Id.VSub_DollarName '$VMS')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<VBoxManage>} {<--nologo>} {<controlvm>} {($ Id.VSub_DollarName '$v')} {<savestate>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:wait) op: assign_op.Equal rhs: {<30>} spids: [1322] ) ] ) ] ) ) ] spids: [1271 1288] ) ] ) ] spids: [1103 1124] ) ] ) ] spids: [1062 1075] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$wait'))} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_action_begin_msg>} { (DQ <'Waiting for '> ($ Id.VSub_DollarName '$wait') <' seconds for VM shutdown'> ) } ) (C {<sleep>} {($ Id.VSub_DollarName '$wait')}) (C {<log_action_end_msg>} {<0>}) ] spids: [1347 1362] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: dmnstatus body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {<running>} {<vboxdrv>}) (C {<running>} {<vboxnetflt>}) (C {<running>} {<vboxnetadp>}) (C {<running>} {<vboxpci>}) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'VirtualBox kernel modules are loaded.'>)}) (command.ForEach iter_name: i iter_words: [{($ Id.VSub_DollarName '$SHUTDOWN_USERS')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-d>} {<'/tmp/.vbox-'> ($ Id.VSub_DollarName '$i') <-ipc>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<export>} {<Id.Lit_VarLike 'VBOX_IPC_SOCKETID='> (DQ ($ Id.VSub_DollarName '$i')) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VMS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<VBoxManage>} {<--nologo>} {<list>} {<runningvms>} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [1474] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName '$VMS'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VMS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$VMS'))} ) (C {<sed>} {<-e>} {(SQ <'s/^".*".*{\\(.*\\)}/\\1/'>)} ) ] negated: F ) ) } spids: [1515] ) ] ) (C {<echo>} {(DQ <'The following VMs are currently running:'>)} ) (command.ForEach iter_name: v iter_words: [{($ Id.VSub_DollarName '$VMS')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<echo>} {(DQ <' '> ($ Id.VSub_DollarName '$v'))} ) ] ) ) ] spids: [1491 1512] ) ] ) ] spids: [1450 1463] ) ] ) ] ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [1401 1426] ) ] else_action: [ (C {<echo>} {(DQ <'VirtualBox kernel module is not loaded.'>)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<3>} ) ] ) ] ) ) (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list:[{<start>}] action:[(C {<start>})] spids:[1615 1616 1622 -1]) (case_arm pat_list: [{<stop>}] action: [(command.AndOr ops:[Id.Op_DAmp] children:[(C {<stop_vms>}) (C {<stop>})])] spids: [1624 1625 1635 -1] ) (case_arm pat_list: [{<stop_vms>}] action: [(C {<stop_vms>})] spids: [1637 1638 1644 -1] ) (case_arm pat_list: [{<restart>} {<force-reload>}] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [(C {<stop_vms>}) (C {<stop>}) (C {<start>})] ) ] spids: [1646 1649 1663 -1] ) (case_arm pat_list:[{<status>}] action:[(C {<dmnstatus>})] spids:[1665 1666 1672 -1]) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<echo>} { (DQ <'Usage: '> ($ Id.VSub_Number '$0') <' {start|stop|stop_vms|restart|force-reload|status}'> ) } ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [1674 1675 -1 1691] ) ] ) ] )