(command.CommandList children: [ (command.ShFunction name: find_sbin_cmd body: (BraceGroup children: [ (command.ForEach iter_names: [base] iterable: (for_iter.Words words:[{<'/'>} {<'/usr/'>} {<'/usr/local'>}]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {($ Id.VSub_DollarName '$base') <'/sbin/'> ($ Id.VSub_Number '$1') } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {($ Id.VSub_DollarName '$base') <'/sbin/'> ($ Id.VSub_Number '$1')} ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> ) ] spids: [60 73] ) ] ) ] ) ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FDISK) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{<which>} {<fdisk>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [93] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LSUSB) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{<which>} {<lsusb>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [105] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LSPCI) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{<which>} {<lspci>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [117] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$FDISK'))} {<Id.Lit_RBracket ']'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FDISK) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<find_sbin_cmd>} {<fdisk>}))} spids: [141] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$LSUSB'))} {<Id.Lit_RBracket ']'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LSUSB) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<find_sbin_cmd>} {<lsusb>}))} spids: [162] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$LSPCI'))} {<Id.Lit_RBracket ']'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LSPCI) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<find_sbin_cmd>} {<lspci>}))} spids: [183] ) ] ) ] ) (C {<echo>} {(DQ <'============= Drives ============='>)}) (command.Pipeline children: [ (command.Subshell child: (command.CommandList children: [ (command.Simple words: [{<sed>} {<-n>} {(SQ <'s/.* \\([hs]d[a-f]$\\)/\\1/p'>)}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/proc/partitions'>} ) ] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-e>} {<'/dev/cdrom'>} {<Id.Lit_RBracket ']'>}) (command.Pipeline children: [(C {<readlink>} {<-f>} {<'/dev/cdrom'>}) (C {<cut>} {<'-d/'>} {<-f3>})] negated: F ) ] ) ] ) ) (C {<sort>}) (C {<uniq>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<read>} {<disk>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (C {<echo>} {<-n>} {(DQ <'/dev/'> ($ Id.VSub_DollarName '$disk') <': '>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-r>} {<'/dev/'> ($ Id.VSub_DollarName '$disk')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(DQ <'permission denied'>)})] spids: [270 284] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:size) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {($ Id.VSub_DollarName '$FDISK')} {<-l>} {<'/dev/'> ($ Id.VSub_DollarName '$disk')} ) (C {<grep>} {<Disk>}) (C {<cut>} {<-d> (SQ <' '>)} {<-f3-4>}) (C {<tr>} {<-d>} {<Id.Lit_Comma ','>}) ] negated: F ) ) } spids: [300] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple words: [ {<'/sbin/hdparm'>} {<-i>} {<'/dev/'> ($ Id.VSub_DollarName '$disk')} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<grep>} {<Model>}) ] negated: F ) ) } spids: [338] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<echo>} {($ Id.VSub_DollarName '$rest')}) ) } spids: [360] ) ] ) (C {<echo>} {<-n>} {(DQ ($ Id.VSub_DollarName '$rest'))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_DollarName '$size'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(DQ <', Size='> ($ Id.VSub_DollarName '$size'))})] spids: [382 397] ) ] else_action: [(C {<echo>})] ) ] ) ] ) ) ] negated: F ) (C {<echo>} {(DQ <'============= CPUs ============='>)}) (C {<grep>} {(DQ <'model name'>)} {<'/proc/cpuinfo'>}) (C {<echo>} {(DQ <'============= MEM ============='>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KiB) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<grep>} {<MemTotal>} {<'/proc/meminfo'>}) (C {<tr>} {<-s>} {(SQ <' '>)}) (C {<cut>} {<-d> (SQ <' '>)} {<-f2>}) ] negated: F ) ) } spids: [459] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MiB) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<expr>} {($ Id.VSub_DollarName '$KiB')} {<'/'>} {<1024>}) ) } spids: [491] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:round) op: assign_op.Equal rhs: {<32>} spids: [513] ) ] ) (C {<echo>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<expr>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('>)} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('>)} {($ Id.VSub_DollarName '$MiB')} {<'/'>} {($ Id.VSub_DollarName '$round')} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'>)} {<Id.Lit_Other '+'>} {<1>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'>)} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>)} {($ Id.VSub_DollarName '$round')} ) ) <' MiB'> ) } ) (C {<echo>} {(DQ <'============= PCI ============='>)}) (C {($ Id.VSub_DollarName '$LSPCI')} {<-tv>}) (C {<echo>} {(DQ <'============= USB ============='>)}) (C {($ Id.VSub_DollarName '$LSUSB')}) ] )