(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ ($ Id.VSub_Number '$1'))}) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'Usage: '> ($ Id.VSub_Number '$0') <' add|remove (hostname)'>)}) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] spids: [60 73] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_Number '$2'))} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:EXACTHOST) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [108] ) ] ) ] spids: [90 105] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TRANSCRIPT) op: assign_op.Equal rhs: {(DQ <cobbler-transcript.txt>)} spids: [114] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_DollarName '$TRANSCRIPT')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<touch>} {($ Id.VSub_DollarName '$TRANSCRIPT')})] spids: [119 130] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_f child:{<cluster.txt>}) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'Using cluster definition from cluster.txt'>)}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<HOSTNAME>} {<MACADDR>} {<IPADDR>} {<ILOIPADDR>} {<DOMAIN>} {<ROLE>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_DollarName '$HOSTNAME')} right: {(DQ <end>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [181 196] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$ROLE'))} right: {(DQ <bootstrap>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [206 223] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_Number '$1')} right: {<add>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} ) right: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {(DQ ($ Id.VSub_DollarName '$HOSTNAME'))} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {(DQ ($ Id.VSub_DollarName '$ROLE'))} ) ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MATCH) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$HOSTNAME'))} spids: [293] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ACTIONSTRING) op: assign_op.Equal rhs: { (DQ <'adding '> ($ Id.VSub_DollarName '$HOSTNAME') <.> ($ Id.VSub_DollarName '$DOMAIN') <' ('> ($ Id.VSub_DollarName '$IPADDR') <','> ($ Id.VSub_DollarName '$MACADDR') <') to cobbler...'> ) } spids: [299] ) ] ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$ACTIONSTRING')}) (C {<tee>} {<-a>} {($ Id.VSub_DollarName '$TRANSCRIPT')}) ] negated: F ) (C {<sudo>} {<cobbler>} {<system>} {<add>} {<--name> <Id.Lit_Equals '='> ($ Id.VSub_DollarName '$HOSTNAME')} {<--hostname> <Id.Lit_Equals '='> ($ Id.VSub_DollarName '$HOSTNAME') <.> ($ Id.VSub_DollarName '$DOMAIN') } {<--profile> <Id.Lit_Equals '='> <bcpc_host>} {<--ip-address> <Id.Lit_Equals '='> ($ Id.VSub_DollarName '$IPADDR') } {<--mac> <Id.Lit_Equals '='> ($ Id.VSub_DollarName '$MACADDR')} {<--interface> <Id.Lit_Equals '='> <eth0>} ) ] spids: [253 290] ) ] ) ] spids: [238 250] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {<remove>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} ) right: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {(DQ ($ Id.VSub_DollarName '$HOSTNAME'))} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {(DQ ($ Id.VSub_DollarName '$ROLE'))} ) ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MATCH) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$HOSTNAME'))} spids: [420] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ACTIONSTRING) op: assign_op.Equal rhs: { (DQ <'removing '> ($ Id.VSub_DollarName '$HOSTNAME') <' from cobbler...'> ) } spids: [426] ) ] ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$ACTIONSTRING')}) (C {<tee>} {<-a>} {($ Id.VSub_DollarName '$TRANSCRIPT')}) ] negated: F ) (C {<sudo>} {<cobbler>} {<system>} {<remove>} {<--name> <Id.Lit_Equals '='> ($ Id.VSub_DollarName '$HOSTNAME')} ) ] spids: [380 417] ) ] ) ] spids: [364 377] ) ] else_action: [ (C {<echo>} { (DQ <'Usage: '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_Number '$1') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' unrecognized'> ) } ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] ) ] ) redirects: [(redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<cluster.txt>})] ) ] spids: [140 151] ) ] else_action: [ (C {<echo>} {(DQ <'Error: No cluster definition (cluster.txt) available'>)}) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$MATCH'))} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(DQ <'Cobbler sync...'>)}) (C {<sudo>} {<cobbler>} {<sync>})] spids: [504 519] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {<No>} {<hosts>} {<defined> <Id.Lit_Comma ','>} {<no>} {<action>} {<taken.>}) ] spids: [542 555] ) ] else_action: [ (C {<echo>} {<Error>} {<Id.Lit_Colon ':'>} {<Host>} {(DQ <'\''> ($ Id.VSub_Number '$2') <'\''>)} {<unrecognized> <Id.Lit_Comma ','>} {<no>} {<action>} {<taken.>} ) ] ) ] ) ] )