(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 left:<Id.Lit_VarLike 'SHUTDOWN_USERS='> name:SHUTDOWN_USERS) op: assign_op.Equal rhs: {(DQ )} spids: [143] ) ] redirects: [] ) (command.ForEach iter_names: [i] iterable: (for_iter.Words words:[{<'/tmp/.vbox-'> <Id.Lit_Star '*'> <-ipc>}]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SHUTDOWN_USERS='> 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 stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } spids: [162] ) ] redirects: [] ) ] ) redirects: [] ) ] spids: [123 140] ) ] else_action: [] redirects: [] ) (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] ) ] else_action: [] redirects: [] ) (command.ShFunction name: running body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [(C {<lsmod>}) (C {<grep>} {<-q>} {(DQ ($ Id.VSub_Number 1) <'[^_-]'>)})] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: start body: (BraceGroup left: <Id.Lit_LBrace '{'> 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 stderr_indices: [] ) 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>} ) ] more_env: [] do_fork: T ) ] negated: T stderr_indices: [] ) 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>}) right: <Id.Backtick_Right '`'> ) } {<-name>} {(DQ <vboxdrv> <Id.Lit_BadBackslash '\\'> <'.*'>)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<grep>} {<-q>} {<vboxdrv>}) ] negated: T stderr_indices: [] ) 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' > ) } ) ] redirects: [] ) (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>)})] redirects: [] ) ] spids: [260 269] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [(C {<running>} {<vboxnetflt>})] negated: T stderr_indices: [] ) 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>} ) ] more_env: [] do_fork: T ) ] negated: T stderr_indices: [] ) 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>}) right: <Id.Backtick_Right '`'> ) } {<-name>} { (DQ <vboxnetflt> <Id.Lit_BadBackslash '\\'> <'.*'> ) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<grep>} {<-q>} {<vboxnetflt>}) ] negated: T stderr_indices: [] ) 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' > ) } ) ] redirects: [] ) (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>)})] redirects: [] ) ] spids: [375 384] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [(C {<running>} {<vboxnetadp>})] negated: T stderr_indices: [] ) 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>} ) ] more_env: [] do_fork: T ) ] negated: T stderr_indices: [] ) 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>}) right: <Id.Backtick_Right '`'> ) } {<-name>} { (DQ <vboxnetadp> <Id.Lit_BadBackslash '\\'> <'.*'> ) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<grep>} {<-q>} {<vboxnetadp>}) ] negated: T stderr_indices: [] ) 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' > ) } ) ] redirects: [] ) (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>)})] redirects: [] ) ] spids: [490 499] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [(C {<running>} {<vboxpci>})] negated: T stderr_indices: [] ) 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>} ) ] more_env: [] do_fork: T ) ] negated: T stderr_indices: [] ) 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>}) right: <Id.Backtick_Right '`'> ) } {<-name>} {(DQ <vboxpci> <Id.Lit_BadBackslash '\\'> <'.*'>)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<grep>} {<-q>} {<vboxpci>}) ] negated: T stderr_indices: [] ) 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' > ) } ) ] redirects: [] ) (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>)})] redirects: [] ) ] spids: [605 614] ) ] else_action: [] redirects: [] ) (C {<log_end_msg>} {<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: stop body: (BraceGroup left: <Id.Lit_LBrace '{'> 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'>} ) ] more_env: [] do_fork: T ) ] negated: T stderr_indices: [] ) 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>)})] redirects: [] ) ] spids: [743 750] ) ] else_action: [] redirects: [] ) (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'>} ) ] more_env: [] do_fork: T ) ] negated: T stderr_indices: [] ) 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>)})] redirects: [] ) ] spids: [803 810] ) ] else_action: [] redirects: [] ) (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'>} ) ] more_env: [] do_fork: T ) ] negated: T stderr_indices: [] ) 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>)})] redirects: [] ) ] spids: [863 870] ) ] else_action: [] redirects: [] ) (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'>} ) ] more_env: [] do_fork: T ) ] negated: T stderr_indices: [] ) 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>)})] redirects: [] ) ] spids: [923 930] ) ] else_action: [] redirects: [] ) (C {<log_end_msg>} {<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: stop_vms body: (BraceGroup left: <Id.Lit_LBrace '{'> 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'>} ) ] more_env: [] do_fork: T ) ] negated: T stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [1018 1031] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'wait='> name:wait) op: assign_op.Equal rhs: {<0>} spids: [1044] ) ] redirects: [] ) (command.ForEach iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName SHUTDOWN_USERS)}]) 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 left:<Id.Lit_VarLike 'VMS='> 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'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [1086] ) ] redirects: [] ) (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 left: <Id.Lit_VarLike 'VMS='> 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 stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [1127] ) ] redirects: [] ) (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_names: [v] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName VMS)}] ) body: (command.DoGroup children: [ (C {<VBoxManage>} {<--nologo>} {<controlvm>} {($ Id.VSub_DollarName v)} {<poweroff>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'wait='> name: wait ) op: assign_op.Equal rhs: {<10>} spids: [1206] ) ] redirects: [] ) ] ) redirects: [] ) ] 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_names: [v] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName VMS)}] ) body: (command.DoGroup children: [ (C {<VBoxManage>} {<--nologo>} {<controlvm>} {($ Id.VSub_DollarName v)} {<acpipowerbutton>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'wait='> name: wait ) op: assign_op.Equal rhs: {<30>} spids: [1264] ) ] redirects: [] ) ] ) redirects: [] ) ] 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_names: [v] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName VMS)}] ) body: (command.DoGroup children: [ (C {<VBoxManage>} {<--nologo>} {<controlvm>} {($ Id.VSub_DollarName v)} {<savestate>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'wait='> name: wait ) op: assign_op.Equal rhs: {<30>} spids: [1322] ) ] redirects: [] ) ] ) redirects: [] ) ] spids: [1271 1288] ) ] else_action: [] redirects: [] ) ] spids: [1103 1124] ) ] else_action: [] redirects: [] ) ] spids: [1062 1075] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (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] ) ] else_action: [] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: dmnstatus body: (BraceGroup left: <Id.Lit_LBrace '{'> 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_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName SHUTDOWN_USERS)}]) 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 left: <Id.Lit_VarLike 'VMS='> 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'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [1474] ) ] redirects: [] ) (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 left: <Id.Lit_VarLike 'VMS='> 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 stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [1515] ) ] redirects: [] ) (C {<echo>} {(DQ <'The following VMs are currently running:'>)} ) (command.ForEach iter_names: [v] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName VMS)}] ) body: (command.DoGroup children: [ (C {<echo>} {(DQ <' '> ($ Id.VSub_DollarName v))}) ] ) redirects: [] ) ] spids: [1491 1512] ) ] else_action: [] redirects: [] ) ] spids: [1450 1463] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (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>} ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (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] ) ] redirects: [] ) ] )