#! /bin/sh # collate and present sysfs information about AoE storage # # A more complete version of this script is aoe-stat, in the # aoetools. set -e global format := '"%8s\t%8s\t%8s'\n" global me := $[basename $0] global sysd := $(sysfs_dir:-/sys) # printf "$format" device mac netif state # Suse 9.1 Pro doesn't put /sys in /etc/mtab #test -z "`mount | grep sysfs`" && { test ! -d "$sysd/block" && do { echo "$me Error: sysfs is not mounted" !1 > !2 exit 1 } for d in [$[ls -d $sysd/block/etherd* !2 >/dev/null | grep -v p] end] { # maybe ls comes up empty, so we use "end" test $d = end && continue global dev := $[echo $d | sed 's/.*!//] printf $format \ $dev \ $[cat '"'$d/netif'"'] \ $[cat '"'$d/state'"'] } | sort (CommandList children: [ (C {(set)} {(-e)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:format) op: Equal rhs: { (DQ ("%8s") (EscapedLiteralPart token:) ("%8s") (EscapedLiteralPart token:) ("%8s") (EscapedLiteralPart token:) ) } spids: [20] ) ] spids: [20] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:me) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Number "$0")})]) left_token: spids: [31 35] ) } spids: [30] ) ] spids: [30] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sysd) op: Equal rhs: { (BracedVarSub token: suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(Lit_Slash /) (sys)}) spids: [38 43] ) } spids: [37] ) ] spids: [37] ) (AndOr children: [ (C {(test)} {(KW_Bang "!")} {(-d)} {(DQ ($ VSub_Name "$sysd") (/block))}) (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name "$me") (" Error: sysfs is not mounted"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[79])] ) (C {(exit)} {(1)}) ] spids: [69] ) ] op_id: Op_DAmp ) (Pipeline children: [ (ForEach iter_name: d iter_words: [ { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (SimpleCommand words: [ {(ls)} {(-d)} {($ VSub_Name "$sysd") (/block/etherd) (Lit_Other "*")} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [105] ) ] ) (C {(grep)} {(-v)} {(p)}) ] negated: False ) ] ) left_token: spids: [96 115] ) } {(end)} ] do_arg_iter: False body: (DoGroup children: [ (AndOr children: [ (C {(test)} {($ VSub_Name "$d")} {(Lit_Other "=")} {(end)}) (ControlFlow token:) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dev) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$d"))}) (C {(sed)} {(SQ <"s/.*!//">)}) ] negated: False ) ] ) left_token: spids: [142 156] ) } spids: [141] ) ] spids: [141] ) (C {(printf)} {(DQ ($ VSub_Name "$format"))} {(DQ ($ VSub_Name "$dev"))} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(cat)} {(EscapedLiteralPart token:) ($ VSub_Name "$d") (/netif) (EscapedLiteralPart token:) } ) ] ) left_token: spids: [174 181] ) ) } { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(cat)} {(EscapedLiteralPart token:) ($ VSub_Name "$d") (/state) (EscapedLiteralPart token:) } ) ] ) left_token: spids: [187 194] ) ) } ) ] spids: [120 197] ) spids: [95 118] ) (C {(sort)}) ] negated: False ) ] )