(List (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub 1]]}}) (List (If (DBracket {B1 UNARY_FILE_d {[LIT_CHARS environments]}}) (= scope= flags=0 words=[] bindings=[('ENVIRONMENTS', {[ComSub (Pipeline (Com {[LIT_CHARS ls]} {[LIT_CHARS -lt]} {[LIT_CHARS environments/] [LIT_OTHER "*"] [LIT_CHARS .json]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Usage: VIP not specified and can't find environment directory"]]}) (Com {[LIT_CHARS exit]}) ) ) (If (DParen {A2 AS_OP_DEQUAL {A Atom NODE_ARITH_WORD {[VarSub ENVIRONMENTS]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}) (= scope= flags=0 words=[] bindings=[('VIPFILE', {[LIT_CHARS environments/] [LIT_OTHER "*"] [LIT_CHARS .json]})]) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Usage: VIP not specified and more than one environment file found"]]}) (Com {[LIT_CHARS exit]}) ) ) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('VIPFILE', {[LIT_CHARS environments/] [DQ [VarSub 1]] [LIT_CHARS .json]})]) ) (Pipeline (Com {[LIT_CHARS grep]} {[LIT_CHARS -i]} {[LIT_CHARS vip]} {[VarSub VIPFILE]}) (Com {[LIT_CHARS tr]} {[LIT_CHARS -d]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS /tmp/vips.txt]} "> 1), > ) ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS V]} {[LIT_CHARS IPADDRESS]}) (List (= scope= flags=0 words=[] bindings=[('VIP', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub IPADDRESS]}) (Com {[LIT_CHARS tr]} {[LIT_CHARS -d]} {[\ LIT_ESCAPED_CHAR "\\\""]}) (Com {[LIT_CHARS tr]} {[LIT_CHARS -d]} {[LIT_COMMA ","]}) )]})]) (If (DBracket {B! {B1 UNARY_STRING_z {[ComSub (Com {[LIT_CHARS which]} {[LIT_CHARS fping]})]}}}) (= scope= flags=0 words=[] bindings=[('UP', {[ComSub (Pipeline (Com {[LIT_CHARS fping]} {[LIT_CHARS -aq]} {[DQ [VarSub VIP]]}) (Com {[LIT_CHARS awk]} {[SQ ]}) )]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('UP', {[ComSub (Pipeline (Com {[LIT_CHARS ping]} {[LIT_CHARS -c1]} {[DQ [VarSub VIP]]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS ttl]}) (Com {[LIT_CHARS awk]} {[SQ ]}) )]})]) ) (If (DBracket {B! {B1 UNARY_STRING_z {[DQ [VarSub UP]]}}}) (List (= scope= flags=0 words=[] bindings=[('MAC', {[DQ ]})]) (= scope= flags=0 words=[] bindings=[('HOST', {[DQ ]})]) (= scope= flags=0 words=[] bindings=[('MAC', {[ComSub (Pipeline (Com {[LIT_CHARS arp]} {[LIT_CHARS -n]} {[VarSub VIP]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS ether]}) (Com {[LIT_CHARS awk]} {[SQ ]}) )]})]) (If (DBracket {B1 UNARY_STRING_z {[VarSub MAC]}}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "arp lookup of "][VarSub VIP][LIT_CHARS " failed"]]}) (ElseTrue) (= scope= flags=0 words=[] bindings=[('HOST', {[ComSub (Com {[LIT_CHARS grep]} {[LIT_CHARS -i]} {[DQ [VarSub MAC]]} {[LIT_CHARS cluster.txt]})]})]) ) (If (DBracket {B1 UNARY_STRING_n {[VarSub HOST]}}) (Com {[LIT_CHARS echo]} {[DQ [VarSub VIP][LIT_CHARS " is currently on : "][VarSub HOST]]}) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Searching for "][VarSub VIP][LIT_CHARS " host by host"]]}) (While (Com {[LIT_CHARS read]} {[LIT_CHARS HOST]} {[LIT_CHARS MAC]} {[LIT_CHARS IP]} {[LIT_CHARS IP2]} {[LIT_CHARS DOMAIN]} {[LIT_CHARS ROLE]} {[LIT_CHARS OVERRIDE]}) (List (= scope= flags=0 words=[] bindings=[('MATCH', {[ComSub (Com {[LIT_CHARS ./nodessh.sh]} {[VarSub 1]} {[VarSub IP]} {[DQ [LIT_CHARS "ip a | grep "][VarSub VIP]]})]})]) (If (DBracket {B? LOGICAL_BINARY_AND {B1 UNARY_STRING_n {[VarSub MATCH]}} {B2 BINARY_STRING_TILDE_EQUAL {[VarSub MATCH]} {[LIT_CHARS inet]}}}) (List (= scope= flags=0 words=[] bindings=[('HOST', {[ComSub (Com {[LIT_CHARS grep]} {[LIT_CHARS -i]} {[DQ [VarSub HOST]]} {[LIT_CHARS cluster.txt]})]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub VIP][LIT_CHARS " is currently on : "][VarSub HOST]]}) (Com {[LIT_CHARS break]}) ) ) ) ) ) ) ) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [VarSub VIP][LIT_CHARS " appears to be down"]]}) ) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS /tmp/vips.txt]}) )