# MCcfg.ctl:209: Collects System Configuration Information # $Id: MCcfg.ctl,v 1.30 2016/05/25 21:11:22 RDA Exp $ # ARCS: $Header: /home/cvs/cvs/RDA_8/src/scripting/lib/collect/EXPLORER/MCcfg.ctl,v 1.30 2016/05/25 21:11:22 RDA Exp $ # # Change History # 20160525 TSO Avoid non-Linux commands being called in sysconfig =head1 NAME EXPLORER:MCcfg - Collects System Configuration Information =head1 DESCRIPTION This module collects system configuration information =cut use Buffer use Mrc # Initialization var $VALIDATE = true keep $VALIDATE section begin var $ERR = '---## Associated Errors' var $TOC = '%TOC%' var $TOP = '[[#Top][Back to top]]' var $WRN = ' * Links point to files that have been collected in their \ original format. Opening them directly in your browser can \ present risks. To prevent them, access the file outside the \ browser or use the link to save them and use an adequate \ viewer.' var $RE_STR='[\040-\176]{4,}' run EXPLORER:XPLRlib('sysconfig') #------------------------------------------------------------------------------ # XPLR_sysconfig section #------------------------------------------------------------------------------ section XPLR_sysconfig # Validate the execution context call log_run('Processing CFG sections ...') # Define the capture macro macro inspect_results {var ($rpt,$wrk) = @arg import $emx,$fp,$fcp,$qlc,$lmr while ?$wrk->get_line() {var $lin = last if match($lin,'emlxs_dump') var $emx = true if match($lin,'fptrace') var $fp = true if match($lin,'fcptrace') var $fcp = true if match($lin,'qlcgetdump') var $qlc = true if match($lin,'lmrc') var $lmr = true } } =head2 cfg - System Configuration Information Gathers system configuration information using the following commands: =over 2 =item o C<${ACT_CMD} -d vmcore.${LAST} -n unix.${LAST}> (Oracle Solaris 11.1 and earlier) =item o C<${ALOM}/scadm date> =item o C<${ALOM}/scadm loghistory> =item o C<${ALOM}/scadm show> =item o C<${ALOM}/scadm shownetwork> =item o C<${ALOM}/scadm usershow> =item o C<${ALOM}/scadm version -v> =item o C<${CEST}/opt/SUNWcest/bin/cediag -A> =item o C<${CEST}/opt/SUNWcest/bin/cediag -v> =item o C<${CEST}/opt/SUNWcest/bin/cestat -v> =item o C<${RSC}/rscadm date> =item o C<${RSC}/rscadm loghistory> =item o C<${RSC}/rscadm show> =item o C<${RSC}/rscadm usershow> =item o C<${RSC}/rscadm version -v> =item o C<${SMB}/smbios> =item o C<${SMB}/smbios -i 1> =item o C<${SMB}/smbios -w> =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C (Oracle Solaris 11.2 and later) =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C (Oracle Solaris 11.1 and earlier) =item o C =item o C =item o C =item o C =item o C =item o C (Oracle Solaris 11.2 and later) =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C (Oracle Solaris 11.2 and later) =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o Cmsgbuf | ${DBTOOL} -k ${CORE}> (Oracle Solaris 11.2 and later) =item o Cmsgbuf | ${DBTOOL} -k ${UNIXFILE} ${CORE}> (Oracle Solaris 11.1 and earlier) =item o Cthreadlist | /usr/bin/mdb -k /dev/ksyms /dev/mem> (when requested) =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =back Collects also the following files: =over 2 =item o F =item o F =item o F =item o F =item o F =item o F =item o F =item o F<${CRASHDIR}/act.*> (Oracle Solaris 11.1 and earlier) =back =cut debug ' Inside CFG collection, gathering system configuration information' pretoc '2:System Configuration' # Define some variables needed if ?$unc = ${CMD.UNAME} {var ($nmi) = command(concat($unc,' -i')) var ($nmm) = command(concat($unc,' -m')) var ($nmn) = command(concat($unc,' -n')) } if ?testFile('x','/usr/sbin/prtconf') var $sys = nvl(first(grepCommand('/usr/sbin/prtconf','^SUNW,','f')),\ first(grepCommand('/usr/sbin/prtconf','^CYRS,','f'))) # Store the global zone files to collect var @fil = (\ ['sysconfig/lutab', '/etc/lutab'],\ ['sysconfig/menu.lst', '/boot/grub/menu.lst'],\ ['sysconfig/bootenv.rc', '/boot/solaris/bootenv.rc'],\ ['sysconfig/drv', '/kernel/drv',undef,undef,'\.conf$','n'],\ ['sysconfig/drv', '/usr/kernel/drv',undef,undef,'\.conf$','n'],\ ['sysconfig/drv/kernel/drv','/kernel/drv',undef,undef,'\.conf$','n'],\ ['sysconfig/drv/usr/kernel/drv','/usr/kernel/drv',undef,undef,'\.conf$','n'],\ [join('/','sysconfig/drv/platform',$nmi,'kernel/drv'),\ catDir('/platform',$nmi,'kernel','drv'),undef,undef,'\.conf$','n'],\ ['sysconfig/rpool/menu.lst','/rpool/boot/grub/menu.lst']) if compare('ne',$nmi,$nmm) call push(@fil,\ [join('/','sysconfig/drv/platform',$nmm,'kernel/drv'),\ catDir('/platform',$nmm,'kernel','drv'),undef,undef,'\.conf$','n']) # Collect zone information loop $rec (get_zones(true)) {if $loc = defined($nam = $rec->[0]) {var ($ttl,$pre,$exe) = (concat('From Zone ',$nam),\ concat('zones/',$nam),\ concat('/usr/sbin/zlogin ',$nam)) call log_info(concat('sysconfig: RUNNING: zone ',$nam),\ concat(' Inside CFG collection, collecting from ',$nam,' zone')) } else var ($ttl,$pre,$exe) = ('From Global Zone') var $top = $rec->[1] var $ver = $rec->[2] var @cmd = () report concat('cfg_z_',nvl($nam,'global')) title '---+!! ',$ttl title $TOC # Prepare commands call push(@cmd,\ '---+ System Information',\ ['sysconfig/uname-a',\ ${CMD.UNAME:'uname'},'-a',\ '---++ System Name'],\ ['sysconfig/uptime',\ ${CMD.UPTIME:'uptime'},undef,\ '---++ System Uptime'],\ ['sysconfig/who-b',\ ${CMD.WHO:'who'},'-b',\ '---++ Last Reboot']) if ?$unc {if !grepCommand(concat($exe,' ',$unc,' -X 2>&1'),'invalid option','f') call push(@cmd,\ ['sysconfig/uname-X',\ $unc,'-X',\ '---++ Expanded System Information']) } call push(@cmd,\ ['sysconfig/last-100-login',\ ${CMD.LAST:'last'},'-100',\ '---++ Last 100 Logins'],\ ['sysconfig/last-20-reboot',\ ${CMD.LAST:'last'},'-20 reboot',\ '---++ Last 20 Reboots'],\ ['sysconfig/last-reboot',\ ${CMD.LAST:'last'},'reboot',\ '---++ Reboot History'],\ ['sysconfig/locale',\ ${CMD.LOCALE:'locale'},undef,\ '---++ Locale Information'],\ ['sysconfig/ifconfig-a',\ '/usr/sbin/ifconfig','-a',\ '---++ Network Interface']) if and(not($loc),compare('VALID',$ver,'5.8')) call push(@cmd,\ ['sysconfig/ifconfig-a-modlist.err',\ undef,concat("The command \054ifconfig -a modlist\054 may cause kernel ",\ "panic, so explorer temporarily disables this command ",\ "output collection"),\ '---++ Network Interface Module Listing']) call push(@cmd,\ ['sysconfig/sysdef',\ '/usr/sbin/sysdef',undef,\ '---++ System Definition'],\ ['sysconfig/sysdef-d',\ '/usr/sbin/sysdef','-d',\ '---++ System Definition Tree'],\ ['sysconfig/vmstat_3_3',\ ${CMD.VMSTAT:'vmstat'},'3 3',\ '---++ Virtual Memory Statistics'],\ ['sysconfig/ls-ld',\ ${CMD.LS:'ls'},\ '-ld / /dev /etc /lib /sbin /tmp /usr /var',\ '---++ Permissions on Critical System Directories']) # Collect firmware update utility information if compare('VALID',$ver,'5.11.2') call push(@cmd,\ ['sysconfig/fwupdate_list_all',\ '/usr/sbin/fwupdate','list all',\ '---++ All Devices Available for Upgrade']) if !$loc {call push(@cmd,\ ['sysconfig/env',\ '/usr/bin/env',undef,\ '---++ Environment'],\ ['sysconfig/eeprom',\ '/usr/sbin/eeprom',undef,\ '---++ EEPROM Display',\ {out=>{tag=>'_sn_eeprom_'}}],\ ['sysconfig/isainfo',\ '/usr/bin/isainfo',undef,\ '---++ Instruction Set Architecture'],\ ['sysconfig/isainfo-kv',\ '/usr/bin/isainfo','-kv',\ '---++ Kernel Instruction Set'],\ ['sysconfig/prtconf-v',\ '/usr/sbin/prtconf','-v',\ '---++ System Configuration',\ {out=>{tag=>'_sn_prtconf_v_'}}],\ ['sysconfig/prtconf-vD',\ '/usr/sbin/prtconf','-vD',\ '---++ System Configuration with Device Drivers'],\ ['sysconfig/prtconf-vp',\ '/usr/sbin/prtconf','-vp',\ '---++ System Configuration (PROM)',\ {out=>{tag=>'_sn_prtconf_vp_'}}],\ ['sysconfig/prtconf-F',\ '/usr/sbin/prtconf','-F',\ '---++ Console Frame Buffer Device'],\ ['sysconfig/prtpicl-v',\ '/usr/sbin/prtpicl','-v',\ '---++ PICL Tree',\ {out=>{tag=>'_sn_prtpicl_v_'},req=>{inc=>20}}]) if !grepCommand('/usr/bin/iostat -En 2>&1','options','f') call push(@cmd,\ ['sysconfig/iostat-En',\ '/usr/bin/iostat','-En',\ '---++ I/O Statistics']) if !grepCommand('/usr/sbin/prtconf -V 2>&1','illegal option','f') call push(@cmd,\ ['sysconfig/prtconf-V',\ '/usr/sbin/prtconf','-V',\ '---++ PROM Version']) if compare('FINAL',$ver,'5.7') call push(@cmd,\ ['sysconfig/cfgadm-lv',\ '/usr/sbin/cfgadm','-lv',\ '---++ Attachment Points',\ {req=>{inc=>4}}],\ ['sysconfig/cfgadm-l-o_show_FCP_dev',\ '/usr/sbin/cfgadm','-l -o show_FCP_dev',\ '---++ Attachment Points for Fibre Channel Devices',\ {req=>{inc=>4}}],\ ['sysconfig/cfgadm-lv-o_show_FCP_dev',\ '/usr/sbin/cfgadm','-lv -o show_FCP_dev',\ '---++ Attachment Points for Fibre Channel Devices (verbose)',\ {req=>{inc=>4}}]) else call push(@cmd,\ ['sysconfig/cfgadm-alv',\ '/usr/sbin/cfgadm','-alv',\ '---++ Attachment Points',\ {req=>{inc=>4}}],\ ['sysconfig/cfgadm-al-o_show_FCP_dev',\ '/usr/sbin/cfgadm','-al -o show_FCP_dev',\ '---++ Attachment Points for Fibre Channel Devices',\ {req=>{inc=>4}}],\ ['sysconfig/cfgadm-alv-o_show_FCP_dev',\ '/usr/sbin/cfgadm','-alv -o show_FCP_dev',\ '---++ Attachment Points for Fibre Channel Devices (verbose)',\ {req=>{inc=>4}}]) loop $cmd ('/usr/sbin/prtdiag',\ catFile('/usr','platform',$nmm,'sbin','prtdiag'),\ catFile('/usr','platform',$sys,'sbin','prtdiag'),\ '/usr/kvm/prtdiag') {if ?testFile('x',$cmd) {call push(@cmd,\ ['sysconfig/prtdiag-v',\ last,'-v',\ '---++ Diagnostic Information',\ {out=>{tag=>'_sn_prtpicl_v_'},req=>{inc=>6}}]) break } } } call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Processor Information'},\ ['sysconfig/psrinfo-v',\ '/usr/sbin/psrinfo','-v',\ '---++ Processor Information'],\ ['sysconfig/psrinfo-pv',\ '/usr/sbin/psrinfo','-pv',\ '---++ Extended Processor Information']) if !$loc call push(@cmd,\ ['sysconfig/psrset-i',\ '/usr/sbin/psrset','-i',\ '---++ Processor Sets List'],\ ['sysconfig/psrset-p',\ '/usr/sbin/psrset','-p',\ '---++ Processor Sets by Processors'],\ ['sysconfig/psrset-q',\ '/usr/sbin/psrset','-q',\ '---++ Processor Sets Bindings']) call push(@cmd,{cmd => 'UNTITLE'}) if !$loc {call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Boot Environment Information'},\ ['sysconfig/lustatus',\ '/usr/sbin/lustatus',undef,\ '---++ Boot Environment Status']) var @lin = grepFile('/etc/lutab','^#','v') call loadCommand(concat(${CMD.DF:'df'},' -lk')) var @res = getLines() while @lin {var $lin = shift(@lin) if ($id) = match($lin,':([^:]+):C:') {var $lin = shift(@lin) if grep(@res,field(':',2,$lin),'f') call push(@cmd,\ [concat('sysconfig/lufslist_',$id),\ '/usr/sbin/lufslist',$id,\ concat('---++ Boot Environment Configuration for ',$id)]) else call push(@cmd,\ [concat('sysconfig/lufslist_',$id,'.err'),\ undef,\ concat('The configuration details for the boot environment ',$id,\ ' is not collected by explorer. The root device configured \ for this boot environment is not mounted. Running lufslist \ for this BE can cause system panic (CR: 6735469)'),\ concat('---++ Boot Environment configuration for ',$id)]) } } call push(@cmd,{cmd => 'UNTITLE'}) } call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Process Information'},\ ['sysconfig/ipcs-a',\ ${CMD.IPCS:'ipcs'},'-a',\ '---++ Inter-Process Communication']) if and(not($loc),compare('VALID',$ver,'5.7')) call push(@cmd,\ ['sysconfig/ipcs-A',\ ${CMD.IPCS:'ipcs'},'-A',\ '---++ Inter-Process Communication with Project']) call push(@cmd,\ ['sysconfig/ps-ef',\ ${CMD.PS:'ps'},'-ef',\ '---++ Running Processes (-ef)'],\ ['sysconfig/ps-acefl',\ ${CMD.PS:'ps'},'-acefl',\ '---++ Running Processes (-acefl)'],\ ['sysconfig/ps-axuwww',\ '/usr/ucb/ps','-axuwww',\ '---++ Running Processes (-axuwww)'],\ ['sysconfig/ptree-root',\ '/usr/proc/bin/ptree','root',\ '---++ Process Tree']) if compare('VALID',$ver,'5.6') call push(@cmd,\ ['sysconfig/ps-efPljy',\ ${CMD.PS:'ps'},'-efPljy',\ '---++ Running Processes (-efPljy)']) if ?testFile('x','/usr/bin/prstat') call push(@cmd,\ ['sysconfig/prstat-L',\ '/usr/bin/prstat','-L 1 1',\ '---++ Running LWP Statistics']) call push(@cmd,{cmd => 'UNTITLE'}) call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Services Information'},\ ['sysconfig/svcprop',\ '/usr/bin/svcprop',cond(compare('VALID',$ver,'5.11.1'),"-a '*'","'*'"),\ '---++ Service Configuration Properties']) if compare('VALID',$ver,'5.10') call push(@cmd,\ ['sysconfig/svcs-av',\ '/usr/bin/svcs','-av',\ '---++ Services Status'],\ ['sysconfig/svcs-l',\ '/usr/bin/svcs','-l \*',\ '---++ Services Status Detailed'],\ ['sysconfig/svcs-pv',\ '/usr/bin/svcs','-pv',\ '---++ Processes Associated With Each Service Instance'],\ ['sysconfig/svcs-xv',\ '/usr/bin/svcs','-xv',\ '---++ Enabled Services Not Running'],\ ['sysconfig/ctstat-av',\ '/usr/bin/ctstat','-av',\ '---++ System Contracts'],\ ['sysconfig/svccfg-list',\ '/usr/sbin/svccfg','list',\ '---++ Services List'],\ ['sysconfig/inetadm',\ '/usr/sbin/inetadm',undef,\ '---++ Services Controlled by inetd']) call push(@cmd,{cmd => 'UNTITLE'}) # Store network related commands call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Network Information'},\ ['sysconfig/pmadm-L',\ '/usr/sbin/pmadm','-L',\ '---++ Port Monitor'],\ ['sysconfig/ipsecconf',\ '/usr/sbin/ipsecconf',undef,\ '---++ IPsec Policy']) if !$loc call push(@cmd,\ ['sysconfig/ipsecconf-ln',\ '/usr/sbin/ipsecconf','-ln',\ '---++ Local Host IPsec Policy'],\ ['sysconfig/utadm-p',\ '/opt/SUNWut/sbin/utadm','-p',\ '---++ Sun Ray Interconnect Configuration']) call push(@cmd,\ ['sysconfig/sacadm-L',\ '/usr/sbin/sacadm','-L',\ '---++ Service Access Control']) if and(not($loc),testFile('f','/etc/inet/ntp.conf')) call push(@cmd,\ ['sysconfig/ntpq-p',\ '/usr/sbin/ntpq','-p',\ '---++ Network Time Protocol']) call push(@cmd,{cmd => 'UNTITLE'}) # Store kernel related commands if !$loc {call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Kernel Information'},\ ['sysconfig/modinfo',\ '/usr/sbin/modinfo',undef,\ '---++ Loaded Kernel Modules'],\ ['sysconfig/modinfo-c',\ '/usr/sbin/modinfo','-c',\ '---++ Loaded Kernel Modules and Status'],\ ['sysconfig/lockstat-sleep-5',\ '/usr/sbin/lockstat','sleep 5',\ '---++ Kernel Lock and Profiling Statistics']) if ${MOD.CFG.B_THREAD_LIST} call push(@cmd,\ ['sysconfig/threadlist',\ '/usr/bin/mdb','-k /dev/ksyms /dev/mem',\ '---++ Kernel Thread List',\ {req => {inp => "$G;$ "echo '$G;$ 'echo "$G;$ {inp => "::status\012",\ pre => "echo '::status' |"},\ det => 'echo ::status | /usr/bin/mdb -k'}]) if ?testDir('d','/kernel/drv') call push(@cmd,\ ['sysconfig/ls-lR_kernel_drv',\ ${CMD.LS:'ls'},'-lR /kernel/drv',\ '---++ File Listing from /kernel/drv'],\ ['sysconfig/ls-lR_usr_kernel_drv',\ ${CMD.LS:'ls'},'-lR /usr/kernel/drv',\ '---++ File Listing from /usr/kernel/drv'],\ [concat('sysconfig/ls-lR_platform_',$nmi,'_kernel_drv'),\ ${CMD.LS:'ls'},concat('-lR ',\ quote(catDir('/platform',$nmi,'kernel','drv'))),\ concat('---++ File Listing from /platform/',$nmi,'/kernel/drv')]) if compare('ne',$nmi,$nmm) call push(@cmd,\ [concat('sysconfig/ls-lR_platform_',$nmm,'_kernel_drv'),\ ${CMD.LS:'ls'},concat('-lR ',\ quote(catDir('/platform',$nmm,'kernel','drv'))),\ concat('---++ File Listing from /platform/',$nmm,'/kernel/drv')]) if ?testDir('d','/platform') call push(@cmd,\ ['sysconfig/kernel_ls-l',\ ${CMD.LS:'ls'},concat('-l ',quote(catDir('/platform',$nmm,'kernel'))),\ concat('---++ File Listing from /platform/',$nmm,'/kernel')]) elsif ?testDir('d','/kernel') call push(@cmd,\ ['sysconfig/kernel_ls-l',\ ${CMD.LS:'ls'},'-l /kernel',\ '---++ File Listing from /kernel']) call push(@cmd,{cmd => 'UNTITLE'}) } if and(not($loc),has_zones(),${B_LOCAL:1}) {call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Zone Information'},\ ['sysconfig/zoneadm-list-cv',\ '/usr/sbin/zoneadm','list -cv',\ '---++ Configured Zones'],\ ['sysconfig/zoneadm-list-cp',\ '/usr/sbin/zoneadm','list -cp'],\ ['sysconfig/zoneadm-list-iv',\ '/usr/sbin/zoneadm','list -iv',\ '---++ Installed Zones'],\ ['sysconfig/zoneadm-list-ip',\ '/usr/sbin/zoneadm','list -ip'],\ ['sysconfig/ps-aceflZ',\ ${CMD.PS:'ps'},'-aceflZ -o f,s,zone,user,pid,ppid,class,pri,addr,osz,\ wchan,stime,tty,time,comm',\ '---++ Running Processes (-aceflZ)'],\ ['sysconfig/ps-efZ',\ ${CMD.PS:'ps'},'-efZ -o zone,user,pid,ppid,c,stime,tty,time,comm',\ '---++ Running Processes (-efZ)'],\ ['sysconfig/ps_-ef_-o_zone',\ ${CMD.PS:'ps'},'-ef -o zone,zoneid,pid,ppid,vsz,rss,stime,comm',\ '---++ Running Processes (-ef)'],\ ['sysconfig/ps-efPljyZ',\ ${CMD.PS:'ps'},'-efPljyZ -o s,zone,user,pid,ppid,pgid,sid,psr,c,opri,nice,\ rss,vsz,wchan,stime,tty,time,comm',\ '---++ Running Processes (-efPljyZ)'],\ ['sysconfig/psinfozone',\ ${CMD.PS:'ps'},'-aefl -o user,pid,ppid,project,zone,class,pri,lwp,psr,\ pset,pmem,etime,time,tty,args',\ '---++ Running Processes (-aefl)'],\ ['sysconfig/ipcs-aZ',\ ${CMD.IPCS:'ipcs'},'-aZ',\ '---++ Inter-Process Communication'],\ ['sysconfig/ipcs-AZ',\ ${CMD.IPCS:'ipcs'},'-AZ',\ '---++ Inter-Process Communication - Full Information'],\ ['sysconfig/ptree-z-global-root',\ '/usr/proc/bin/ptree','-z global root',\ '---++ Process Tree']) # Do not check patches when Oracle Solaris 11 if and(compare('SAME',$ver,'5.10'),\ or(and(check_patch(118565,03,true),\ not(check_patch(118345,05))),\ and(check_patch(118345,05),\ not(check_patch(121208,03)),\ not(check_patch(118565,03))))) call push(@cmd,\ ['sysconfig/prctl-n-zone.cpu-shares-i-zone-global.err',\ undef,'prctl skipped due to Sun Alert 102124',\ '---++ Process Resource Control']) else call push(@cmd,\ ['sysconfig/prctl-n-zone.cpu-shares-i-zone-global',\ '/usr/bin/prctl','-n zone.cpu-shares -i zone global',\ '---++ Process Resource Control']) loop $zon (grepCommand('/usr/sbin/zoneadm list -p',\ '^[^:]*:([A-Za-z0-9][\w\-\.]{0,63}):','1')) {next compare('eq',$zon,'global') call push(@cmd,\ [concat('sysconfig/zonecfg-z-',$zon,'-info'),\ '/usr/sbin/zonecfg',concat('-z ',$zon,' info'),\ concat('---++ Zone ',$zon,' Configuration')],\ [concat('sysconfig/zonecfg-z-',$zon,'-export'),\ '/usr/sbin/zonecfg',concat('-z ',$zon,' export')]) } call push(@cmd,{cmd => 'UNTITLE'}) } call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Scheduler Information'},\ ['sysconfig/priocntl-l',\ '/usr/bin/priocntl','-l',\ '---++ Classes'],\ ['sysconfig/priocntl-d-i_class_RT',\ '/usr/bin/priocntl','-d -i class RT',\ '---++ RT Class Information']) if and(not($loc),defined(testFile('x','/usr/sbin/dispadmin'))) {call push(@cmd,\ ['sysconfig/dispadmin-l',\ '/usr/sbin/dispadmin','-l',\ '---++ Scheduler Classes']) loop $typ (grepCommand('/usr/sbin/dispadmin -l','^([A-Z]+)\s+\(','1')) call push(@cmd,\ [concat('sysconfig/dispadmin-c_',$typ),\ '/usr/sbin/dispadmin',concat('-c ',$typ,' -g'),\ concat('---++ ',$typ,' Class Information')]) } call push(@cmd,{cmd => 'UNTITLE'}) if !$loc {call push(@cmd,{cmd => 'TITLE',txt => '---+ Resource Pools Information'}) if ?testFile('x','/usr/sbin/pooladm') call push(@cmd,\ ['sysconfig/pooladm',\ '/usr/sbin/pooladm',undef,\ '---++ Resource Pools']) if ?testFile('x','/usr/bin/poolstat') call push(@cmd,\ ['sysconfig/poolstat',\ '/usr/bin/poolstat',undef,\ '---++ Active Pool Statistics']) if ?testFile('x','/usr/sbin/poolcfg') call push(@cmd,\ ['sysconfig/poolcfg_-dc_info',\ '/usr/sbin/poolcfg','-dc info',\ '---++ Pool Configuration']) call push(@cmd,{cmd => 'UNTITLE'}) if and(compare('VALID',$ver,'5.10'),testFile('x','/opt/SUNWldm/bin/ldm')) {call push(@cmd,\ {cmd => 'TITLE',txt => '---+ LDOM Information'},\ ['sysconfig/svccfg_-s_ldmd_listprop',\ '/usr/sbin/svccfg','-s ldmd listprop',\ '---++ LDOM Service Properties']) call command('/usr/bin/pgrep ldmd > /dev/null') if !status() call push(@cmd,\ ['sysconfig/ldm_list_-l',\ '/opt/SUNWldm/bin/ldm','list -l',\ '---++ List'],\ ['sysconfig/ldm_list_-l_-p',\ '/opt/SUNWldm/bin/ldm','list -l -p'],\ ['sysconfig/ldm_list-devices_-a',\ '/opt/SUNWldm/bin/ldm','list-devices -a',\ '---++ Devices List'],\ ['sysconfig/ldm_-V',\ '/opt/SUNWldm/bin/ldm','-V',\ '---++ Version'],\ ['sysconfig/var_opt_SUNWldm',\ ${CMD.LS:'ls'},'-lL /var/opt/SUNWldm',\ '---++ File Listing from /var/opt/SUNWldm']) call push(@cmd,{cmd => 'UNTITLE'}) } if and(compare('eq',$nmm,'sun4v'),testFile('x','/usr/sbin/virtinfo')) call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Virtualization Information'},\ ['sysconfig/virtinfo-a',\ '/usr/sbin/virtinfo','-a',\ '---++ Virtualization Domain Information',\ {out=>{tag=>'_sn_virtinfo_a_'}}],\ ['sysconfig/virtinfo-a-p',\ '/usr/sbin/virtinfo','-a -p'],\ {cmd => 'UNTITLE'}) if ?testFile('x','/usr/sbin/fcinfo') {call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Fibre Channel HBA Port Information'},\ ['sysconfig/fcinfo',\ '/usr/sbin/fcinfo','hba-port -l',\ '---++ HBA List'],\ ['sysconfig/fcinfo_lu-v',\ '/usr/sbin/fcinfo','lu -v',\ '---++ Logical Units Information']) call loadCommand('/usr/sbin/fcinfo hba-port -l') var @lin = getLines() while @lin {var $lin = shift(@lin) if ($prt) = match($lin,'^HBA Port WWN: ([0-9a-f]+)$') {while and(@lin,not(($val) = match($lin,'^\s{1}State: (\w+)$'))) var $lin = shift(@lin) if compare('eq',$val,'online') call push(@cmd,\ [concat('sysconfig/fcinfo_remote-port.',$prt),\ '/usr/sbin/fcinfo',concat('remote-port -p ',$prt,' -ls'),\ concat('---++ Active Remote Port: ',$prt)]) } } call push(@cmd,{cmd => 'UNTITLE'}) } if ?testFile('x','/usr/bin/lgrpinfo') call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Locality Groups Information'},\ ['sysconfig/lgrpinfo-a',\ '/usr/bin/lgrpinfo','-a'],\ {cmd => 'UNTITLE'}) if ?testFile('x','/usr/sbin/hotplug') {if grepCommand('/usr/bin/svcs -a 2>/dev/null','^online.*hotplug','f') call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Hotplug Connectors and Ports Information'},\ ['sysconfig/hotplug_list_-l',\ '/usr/sbin/hotplug','list -l',\ '---++ Full Paths to Connections and Device Nodes'],\ ['sysconfig/hotplug_list_-v',\ '/usr/sbin/hotplug','list -v',\ '---++ Detailed Information'],\ {cmd => 'UNTITLE'}) } if is_pkg_installed('SUNWapu') call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Alternate Pathing Information'},\ ['sysconfig/ap/apconfig-D',\ '/usr/sbin/apconfig','-D',\ '---++ Location and Status for all Known Host Database Copies'],\ ['sysconfig/ap/apconfig-N',\ '/usr/sbin/apconfig','-N',\ '---++ Committed Network Information Pathgroups'],\ ['sysconfig/ap/apconfig-N-u',\ '/usr/sbin/apconfig','-N u',\ '---++ Uncommitted Network Information Pathgroups'],\ ['sysconfig/ap/apconfig-S',\ '/usr/sbin/apconfig','-S',\ '---++ Committed Disk Pathgroups'],\ ['sysconfig/ap/apconfig-S-u',\ '/usr/sbin/apconfig','-S u',\ '---++ Uncommitted Disk Pathgroups'],\ ['sysconfig/ap/apinst',\ '/usr/sbin/apinst',undef,\ '---++ Disk Host Adapter Instances'],\ {cmd => 'UNTITLE'}) else call log_warning('AP not installed') if ?$dir = get_pkg_base('SUNWcest','opt/SUNWcest/bin') {var $cmd = catFile($dir,'cediag') call push(@cmd,\ {cmd => 'TITLE',txt => '---+ System Memory Diagnostics'},\ ['sysconfig/cediag-A',\ $cmd,'-A',\ '---++ License Status']) if command(concat($cmd,' -A 2>/dev/null')) call log_warning('Run cediag manually to accept license') else call push(@cmd,\ ['sysconfig/cediag-v',\ $cmd,'-v',\ '---++ DIMM Analysis']) call push(@cmd,\ ['sysconfig/cestat-v',\ catFile($dir,'cestat'),'-v',\ '---++ Page Retirement Statistics'],\ {cmd => 'UNTITLE'}) } if ?testFile('x','/usr/sbin/lom') call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Lights Out Manager Information'},\ ['sysconfig/lom/lom-a',\ '/usr/sbin/lom','-a',\ '---++ Component Status'],\ ['sysconfig/lom/lom-c',\ '/usr/sbin/lom','-c',\ '---++ Configuration'],\ ['sysconfig/lom/lom-l',\ '/usr/sbin/lom','-l',\ '---++ Fault and Alarm LEDs Status'],\ ['sysconfig/lom/lom-e-100-4',\ '/usr/sbin/lom','-e 100,4',\ '---++ Event Log'],\ {cmd => 'UNTITLE'}) var $dir = catDir('/usr','platform',$nmi) if ?testFile('x',catFile($dir,'sbin','scadm')) {var $cmd = lastFile() call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Advanced Lights Out Manager Information'},\ ['sysconfig/scadm/scadm-version-v',\ $cmd,'version -v',\ '---++ Version'],\ ['sysconfig/scadm/scadm-date',\ $cmd,'date',\ '---++ Date'],\ ['sysconfig/scadm/scadm-loghistory',\ $cmd,'loghistory',\ '---++ Event Log'],\ ['sysconfig/scadm/scadm-show',\ $cmd,'show',\ '---++ Configuration'],\ ['sysconfig/scadm/scadm-shownetwork',\ $cmd,'shownetwork',\ '---++ Network Configuration'],\ ['sysconfig/scadm/scadm-usershow',\ $cmd,'usershow',\ '---++ User Accounts'],\ {cmd => 'UNTITLE'}) } if ?nvl(testFile('x',catFile('usr','sbin','rscadm')),\ testFile('x',catFile($dir,'rsc','rscadm'))) {var $cmd = last call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Remote System Console Information'},\ ['sysconfig/rscadm/rscadm-version-v',\ $cmd,'version -v',\ '---++ Version'],\ ['sysconfig/rscadm/rscadm-date',\ $cmd,'date',\ '---++ Date'],\ ['sysconfig/rscadm/rscadm-loghistory',\ $cmd,'loghistory',\ '---++ Event Log'],\ ['sysconfig/rscadm/rscadm-show',\ $cmd,'show',\ '---++ Configuration'],\ ['sysconfig/rscadm/rscadm-usershow',\ $cmd,'usershow',\ '---++ User Accounts'],\ {cmd => 'UNTITLE'}) } if ?testFile('x','/usr/bin/mdb') call push(@cmd,\ {cmd => 'TITLE',txt => '---+ NUMA Debug Information'},\ ['sysconfig/numaio_group',\ '/usr/bin/mdb','-k',\ '---++ NUMAIO',\ {req => {inp => "::numaio_group\012",\ pre => "echo '::numaio_group' |"},\ det => 'echo "::numaio_group" | /usr/bin/mdb -k'}],\ ['sysconfig/numaio_group-c',\ '/usr/bin/mdb','-k',\ '---++ NUMAIO -c',\ {req => {inp => "::numaio_group -c\012",\ pre => "echo '::numaio_group -c' |"},\ det => 'echo "::numaio_group -c" | /usr/bin/mdb -k'}],\ ['sysconfig/numaio_group-o',\ '/usr/bin/mdb','-k',\ '---++ NUMAIO -o',\ {req => {inp => "::numaio_group -o all\012",\ pre => "echo '::numaio_group -o all' |"},\ det => 'echo "::numaio_group -o all" | /usr/bin/mdb -k'}],\ {cmd => 'UNTITLE'}) call push(@cmd,\ {cmd => 'TITLE',txt => '---+ System Interrupts'},\ ['sysconfig/interrupts',\ '/usr/bin/mdb','-k',\ '---++ Interrupts',\ {req => {inp => "::interrupts\012",\ pre => "echo '::interrupts' |"},\ det => 'echo "::interrupts" | /usr/bin/mdb -k'}],\ ['sysconfig/vecint',\ '/usr/bin/mdb','-k',\ '---++ Hardware',\ {req => {inp => "::vecint\012",\ pre => "echo '::vecint' |"},\ det => 'echo "::vecint" | /usr/bin/mdb -k'}],\ ['sysconfig/softint',\ '/usr/bin/mdb','-k',\ '---++ Software',\ {req => {inp => "::softint\012",\ pre => "echo '::softint' |"},\ det => 'echo "::softint" | /usr/bin/mdb -k'}],\ {cmd => 'UNTITLE'}) call push(@cmd,{cmd => 'TITLE',txt => '---+ Memory Placement Optimization'}) if or(compare('VALID',$ver,'5.10'),\ and(compare('SAME',$ver,'5.9'),\ grepFile('/etc/release','s9s_u','f',1,1,1))) call push(@cmd,\ ['sysconfig/nlgrps',\ '/usr/bin/mdb','-k',\ '---++ Nlgrps',\ {req => {inp => "nlgrps/X\012",\ pre => "echo 'nlgrps/X' |"},\ det => 'echo "nlgrps/X" | /usr/bin/mdb -k'}],\ ['sysconfig/lgrp_mem_default_policy',\ '/usr/bin/mdb','-k',\ '---++ Default Policy',\ {req => {inp => "lgrp_mem_default_policy/X\012",\ pre => "echo 'lgrp_mem_default_policy/X' |"},\ det => 'echo "lgrp_mem_default_policy/X" | /usr/bin/mdb -k'}]) # Store Emulex, fcptrace, fptrace, QLogic, lmr debug commands when available if compare('VALID',$ver,'5.10') {var ($emx,$fp,$fcp,$qlc,$lmr) = (false,false,false,false,false) call collectCommand({nam=>'dummy_mbd',\ inp=>"::dcmds\012",out=>{fct=>'inspect_results'}\ },'/usr/bin/mdb -k') if $emx {if or(@ins = grepCommand('/usr/bin/echo "::prtconf" | /usr/bin/mdb -k \ 2>/dev/null',\ 'instance\s+#(\w+)\s+\(driver name: emlxs\)','1i'),\ @ins = grepFile('/etc/path_to_inst','\s+(\w+)\s+"emlxs"','1')) {loop $ins (@ins) call push(@cmd,\ {cmd => 'TITLE',txt => concat('---++ Emulex Driver Instance #',$ins)},\ [concat('sysconfig/emlxs_dump_all_',$ins),\ '/usr/bin/mdb','-k',\ '---+++ Emulex Driver Firmware Core',\ {req => {inp => concat('::emlxs_dump all ',$ins,"\012"),\ pre => concat('echo "::emlxs_dump all ',$ins,'" |')},\ det => concat('echo "::emlxs_dump all ',$ins,\ '" | /usr/bin/mdb -k')}],\ [concat('sysconfig/emlxs_msgbuf_',$ins),\ '/usr/bin/mdb','-k',\ '---+++ Emulex Driver Internal Message Buffer',\ {req => {inp => concat('::emlxs_msgbuf ',$ins,"\012"),\ pre => concat('echo "::emlxs_msgbuf ',$ins,'" |')},\ det => concat('echo "::emlxs_msgbuf ',$ins,'" | /usr/bin/mdb -k')}],\ {cmd => 'UNTITLE'}) } } if $fcp call push(@cmd,\ ['sysconfig/fcptrace',\ '/usr/bin/mdb','-k',\ '---++ Fcptrace Debug',\ {req => {inp => "::fcptrace\012",\ pre => "echo '::fcptrace' |"},\ det => 'echo "::fcptrace" | /usr/bin/mdb -k'}]) if $fp call push(@cmd,\ ['sysconfig/fptrace',\ '/usr/bin/mdb','-k',\ '---++ Fptrace Debug',\ {req => {inp => "::fptrace\012",\ pre => "echo '::fptrace' |"},\ det => 'echo "::fptrace" | /usr/bin/mdb -k'}]) if $qlc {if max(@ins = (\ grepCommand('/usr/sbin/luxadm -e port 2>/dev/null','qlc','c'),\ grepCommand(concat(${CMD.ECHO:'echo'},\ ' "::prtconf" | /usr/bin/mdb -k 2>/dev/null'),\ 'instance\s+#\w+\s+\(driver name: qlc\)','c'),\ grepCommand({cmd=>'/usr/sbin/prtconf -v 2>/dev/null',\ tag=>'_sn_prtconf_v_'},'qlc,\s*instance','c'),\ grepFile('/etc/path_to_inst','"qlc"','c'))) {if grepCommand(concat(${CMD.ECHO:'echo'},' "**qlc_state/',last,\ 'J" | /usr/bin/mdb -k 2>/dev/null'),\ '^\s*\w+\s*:\s*(.*)\s*$','1') {loop $adr (split('\s+',last)) call push(@cmd,\ {cmd => 'TITLE',\ txt => concat('---++ QLogic Driver Base Address ',$adr)},\ [concat('sysconfig/qlcgetdump_',$adr),\ '/usr/bin/mdb','-k',\ '---+++ QLogic Driver ASCII Dump',\ {req => {inp => concat($adr,"::qlcgetdump\012"),\ pre => concat('echo "',$adr,'::qlcgetdump" |')},\ det => concat('echo "',$adr,'::qlcgetdump" | /usr/bin/mdb -k')}],\ [concat('sysconfig/qlcgettrace_',$adr),\ '/usr/bin/mdb','-k',\ '---+++ QLogic Driver ASCII Extended Logging Trace',\ {req => {inp => concat($adr,"::qlcgettrace\012"),\ pre => concat('echo "',$adr,'::qlcgettrace" |')},\ det => concat('echo "',$adr,'::qlcgettrace" | /usr/bin/mdb -k')}],\ {cmd => 'UNTITLE'}) } } } if $lmr call push(@cmd,\ ['sysconfig/lmrc-lv_trace_buffer',\ '/usr/bin/mdb','-k',\ '---++ lmrc Driver Kernel Trace Buffer',\ {req => {inp => "::lmrc -lv\012",\ pre => "echo '::lmrc -lv' |"},\ det => 'echo ::lmrc -lv | /usr/bin/mdb -k'}]) } call push(@cmd,{cmd => 'UNTITLE'}) # Collect tape drive information from iostat results if @tbl = grepCommand('/usr/bin/iostat -En 2>/dev/null','rmt|DLT') call push(@cmd,\ {cmd => 'ARRAY',nam => 'sysconfig/rmt_DLT.out',tbl => \@tbl,\ det => '/usr/bin/iostat -En | grep "rmt|DTL"',\ ttl => '---+ Tape Drive Information'}) } call push(@cmd,\ {cmd => 'TITLE',txt => '---+ Crash and Dump Information'},\ ['sysconfig/coreadm',\ '/usr/bin/coreadm',undef,\ '---++ Core File Administration']) if ?testFile('x',catFile($top,'usr','bin','coreadm')) {var ($pat) = grepCommand(join(' ',$exe,'/usr/bin/coreadm'),\ 'global core file pattern: *(.*)$','f1') if $pat {var $dir = dirname($pat) if !match($dir,'%') call push(@cmd,\ [concat('sysconfig/ls-l_coreadm-',cond($loc,'local','global')),\ ${CMD.LS:'ls'},concat('-l ',quote($dir)),\ concat('---++ File Listing from ',encode($dir))]) } } # Collect commands stored so far, and continue with non-deferred collections call do_remote($pre,$exe,$top,@cmd) if !$loc {var $dir = undef if ?testFile('x','/usr/sbin/dumpadm') {call do_remote($pre,$exe,$top,\ ['sysconfig/dumpadm',\ '/usr/sbin/dumpadm',undef,\ '---++ Dump File Administration']) var ($dir) = grepCommand('/usr/sbin/dumpadm',\ 'Savecore directory:\s+(.*)$','f1') var $dir = replace($dir,'\s+\(minfree.*$') } elsif grepFile('/etc/init.d/sysetup','^\s*savecore\s+(.*)$','f1') var $dir = isPath($val = replace(last,'\`uname -n\`',$nmn)) if !?$dir var $dir = catDir('/var/crash',$nmn) if !compare('VALID',$ver,'5.11.2') call do_remote($pre,$exe,$top,\ [concat('sysconfig/crash/ls-alL',replace($dir,'\/','_',true)),\ ${CMD.LS:'ls'},concat('-alL ',quote($dir)),\ '---++ Dump Directory Listing']) else call do_remote($pre,$exe,$top,\ [concat('sysconfig/crash/ls-lLR',replace($dir,'\/','_',true)),\ ${CMD.LS:'ls'},concat('-lLR ',quote($dir)),\ '---++ Dump Directory Listing']) if ?testDir('d',$dir) {var $cmd = cond(testFile('x','/usr/bin/mdb'),'/usr/bin/mdb',\ testFile('x','/usr/bin/adb'),'/usr/bin/adb') loop $dmp (grepDir($dir,'^vmcore\.',\ cond(compare('VALID',$ver,'5.11.2'),'dr','pn'),1)) {if loadString($dmp,$RE_STR,10) var @tbl = getLines() if @tbl call do_remote($pre,$exe,$top,\ {cmd => 'ARRAY',\ nam => concat('sysconfig/crash/strings-',basename($dmp),'.out'),\ tbl => \@tbl,\ det => encode(concat('/usr/bin/strings ',quote($dmp),' | head')),\ ttl => concat('---++ First Strings on Core ',encode($dmp))}) if ?$cmd {var $id = field('\.',1,basename($dmp)) if compare('VALID',$ver,'5.11.2') call do_remote($pre,$exe,$top,\ [concat('sysconfig/crash/msgbuf.',$id),\ $cmd,concat(' -k ',quote($dmp)),\ concat('---++ Message Buffers on ',encode($dmp)),\ {req => {inp => "$ "echo '$ encode(concat('echo "$ {inp => "$ "echo '$ encode(concat('echo "$',$num,$lst) var $lst = $num } } if !?$pkg {if $dmp = testFile('f',catFile($dir,$lst,concat('vmcore.',$lst))) {var $fil = concat('mdb_act_vmcore.',$lst) var $cmd = concat(${CMD.ECHO:'echo'},\ ' "::load act;::act" | /usr/bin/mdb ',quote($dmp)) call command(concat($cmd,' >',quote($out),' 2>',quote($err))) } } else {var $pgm = check($pkg,'support/act','/usr/lib/act/bin/act',\ catFile('/opt',$pkg,'bin','act')) if and(testFile('x',$pgm),\ $f_d = testFile('f',catFile($dir,concat('vmcore.',$lst))),\ $f_n = testFile('f',catFile($dir,concat('unix.',$lst)))) {var $arg = concat('-d ',quote($f_d),' -n ',quote($f_n)) var $bug = false var $cmd = join(' ',$pgm,$arg) var $fil = concat('act-d_vmcore.',$lst) if compare('SAME',$ver,'5.10') {var ($mjv,$miv) = split('\.',get_pkg_version($pkg)) var $bug = and(expr('==',$mjv,8),expr('<',$miv,15)) } if $bug {# Run sed-filtered ACT cmd and check if errno=32 'Broken Pipe' happened call command(concat($cmd,' | /usr/bin/sed /CALLOUT/q >',quote($out),\ ' 2>/dev/null')) if expr('==',status(),8192) # Broken pipe (32 * 256) ? writeTemp('ERR','Output truncated to avoid broken pipe problem') } else call command(concat($cmd,' >',quote($out),' 2>',quote($err))) } } if or(defined(testFile('fs',$err)),defined(testFile('fs',$out))) {prefix {write '---++ ACT dump analysis' write $WRN write '|*File*|' } if testFile('fs',$err) {if collectData(concat('sysconfig/crash/act/',$fil,'.err'),\ $err,['C',concat($fil,'.err')]) write '|[[../',last,'][_blank][',concat($fil,'.err'),']]|' } if testFile('fs',$out) {if collectData(concat('sysconfig/crash/act/',$fil,'.out'),\ $out,['C',concat($fil,'.out')]) write '|[[../',last,'][_blank][',concat($fil,'.out'),']]|' } if hasOutput(true) write $TOP } call closeTemp('ERR') call closeTemp('OUT') } } } call do_remote($pre,$exe,$top,{cmd => 'UNTITLE'}) if !$loc {# Get symbol names from /etc/system var @sym = () loop $sym (grepFile('/etc/system','^set\s+([\w:\-]*)\s*=','1')) {if match($sym,':') var $sym = field(':',1,$sym) call push(@sym,$sym) } # Load nm result just once and for the needed symbols, and generate collects if @sym {var $re = join('|',@sym) var @nm = grepCommand(concat(${CMD.NM:'nm'},' /dev/ksyms'),$re) if @nm {call do_remote($pre,$exe,$top,\ {cmd => 'TITLE',txt => '---+ Symbols Configured on /etc/system'}) loop $sym (@sym) {var @tbl = () loop $val (grep(@nm,$sym)) call push(@tbl,$val) if @tbl call do_remote($pre,$exe,$top,\ {cmd => 'ARRAY',nam => concat('sysconfig/nm.ksyms=',$sym,'.out'),\ tbl => \@tbl,\ det => concat('/usr/ccs/bin/nm /dev/ksyms | /usr/bin/grep ',$sym),\ ttl => concat('---++ Symbol: ',$sym)}) } call do_remote($pre,$exe,$top,{cmd => 'UNTITLE'}) } } if and(compare('eq',$nmi,'SUNW,Sun-Fire-15000'),\ compare('VALID',$ver,'5.8')) {if defined(($id) = grepCommand('/usr/sbin/cfgadm -alv',\ '^(SB[0-9]+::cpu[0-3]) +connected +configured +ok +',\ 'f1')) {prefix {write '---+ Sun Fire LPA Information' write '---## Using: ',\ encode(concat('/usr/sbin/cfgadm -x passthru -o showlpa ',$id)) call beginBlock(true) } if loadCommand(concat('/usr/sbin/cfgadm -x passthru -o showlpa ',$id)) {call addBlock('E','O','sysconfig/cfgadm_showlpa') call writeLastFile() # Add first match line in reversed last 100 lines from messages to report call loadFile('/var/adm/messages',-100) if grepLastFile(concat('^.*(showlpa ',$id,')$'),'f1',-1) write last call endBlock() } if hasOutput(true) write $TOP } } if ?$cmd = nvl(testFile('x','/usr/sbin/smbios'),\ testFile('x','/sbin/smbios'),\ testFile('x','/usr/bin/smbios')) {var $box = cleanBox() var $fil = catFile($box,'smbios-w.bin') call do_remote($pre,$exe,$top,\ {cmd => 'TITLE',txt => '---+ System Management BIOS Information'},\ ['sysconfig/smbios',\ $cmd,undef,\ '---++ BIOS Structures',\ {out=>{tag=>'_sn_smbios_'}}],\ ['sysconfig/smbios-i',\ $cmd,'-i 1',\ '---++ BIOS Structure #1'],\ ['sysconfig/smbios-w',\ $cmd,concat('-w ',quote($fil)),\ '---++ BIOS Image Export Results'],\ {cmd => 'UNTITLE'}) # Collect generated BIOS image file as binary file if ?testFile('fs',$fil) {prefix {write '---++ BIOS image' write $WRN write '|*File*|' } if collectData('sysconfig/smbios-w.out',$fil,['C','smbios (smbios-w.out)']) write '|[[../',last,'][_blank][smbios (smbios-w.out)]]|' if hasOutput(true) write $TOP } } prefix {write '---+ Configuration Files' write $WRN write '|*File Path*| *Size*|*Last Modified Date*|' } call do_collect_fil(@fil) if hasOutput(true) write $TOP } # Add the report to the table of content if isCreated(true) toc '3:[[',getFile(),'][rda_report][',$ttl,']]' } unpretoc =head2 Zones =for zone begin sysconfig Collects system configuration information from the global zone. Unless local zone collections are disabled, collects the system configuration information from the selected local zones using the following commands: =over 2 =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C (Oracle Solaris 11.2 and later) =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =item o C =back =for zone end =head1 SEE ALSO L, L, L =head1 COPYRIGHT NOTICE Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. =head1 TRADEMARK NOTICE Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. =cut