nSANity

Overview

nSANity Data Collector is a support tool designed to aide users and technical support in troubleshooting complex issues. nSANity is able to collect diagnostic and configuration data from a variety of components including:

  • Data ONTAP Storage Controllers
  • Windows 2003 and 2008 hosts
  • VMware ESX hosts (excluding i variants)
  • Linux hosts with kernel 2.6
  • Solaris hosts
  • AIX hosts
  • HP-UX 11i hosts
  • Brocade switches
  • McData switches (EOS, EOSn)
  • Cisco switches (IOS, NXOS and SANOS)
  • QLogic switches

nSANity is designed to perform data collection from the components remotely using a variety of network protocols and native authentication mechanism. The nSANity executable binaries are produced for Windows, Mac OSX and Linux. The Mac OSX and Linux versions of nSANity cannot communicate with Windows components, though the Windows version of nSANity can communicate with all component types without exception.

When remote connectivity is not available, nSANity may be run directly on the target component if that component is Windows or Linux.

Protocols Supported

nSANity supports the following network protocols and will prefer the secure protocol when available.

  • HTTP/HTTPS is used for communicating with Data ONTAP
  • SSH is used for communicating with Cisco, Brocade, VMware ESX, Linux, Solaris, AIX and HP-UX.
  • WMI is used for communicating with Windows hosts
  • A telnet fallback is available for McData switches when SSH is not enabled

Authentication

nSANity requires user credentials that allow it to execute remote commands on the target component. Role based access control can be used to create special user accounts on storage controllers and switches that provide enough administrative access to run the necessary commands. UNIX and UNIX-like operating systems require root access since many of the commands being executed are privileged.

SSH communications with VMware, Linux, Solaris and AIX can use public key authentication if the target host is configured to accept the public key of the user who is running nSANity. See OpenSSH documentation for establishing a public key trust.

WMI is authenticated using standard Windows authentication protocols. The current user’s credentials are used unless a different user credential is specified on the windows URL. Optionally, data collection can be performed directly from the Windows host by logging in a user with administrative privilege and running nSANity with the localhost address, e.g. windows://localhost.

Requirements

Visual C++ 2008 Runtime Library for x86 – This library is provided by Microsoft and is commonly found on Windows 7 and Windows 2008. This library can be added to Windows XP, Windows 2003, Windows Vista, Windows 7 and Windows 2008 as necessary. The x86 or 32-bit version must be installed even if the host platform is x64 (x86-64).

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2

HBA-API WMI Library – The HBA-API library is required to collect HBA information from Windows 2003 systems. Microsoft provides this library as part of the FCInfo package.

http://www.microsoft.com/downloads/details.aspx?FamilyID=73d7b879-55b2-4629-8734-b0698096d3b1&displaylang=en

Instructions

nSANity version: 1.2.10
Using internal command definitions
Running with scope general
Usage: nsanity [options] url1 url2 url3 …

Options

 

Options
Details
--version
show program's version number and exit
-h, --help
show this help message and exit
-i INPUT_FILE
Read URLs from an input file
-T
disable verbose output during data collection
-f NAME
Specify output file name string or case number. e.g.
20090221120000__nsanity.xml.gz
-d DEST
Specify output directory
-L COMPONENT
List commands to be run for each component type.
[ all | windows | vmware | ... ]
-W
Write predefined commands to external file.
-S SCOPE
Scope selection, general (default), survey, snapdrive,  snapmanager
-x EXTRACT
Extract existing nSANity output to individual files and directories.
-u
Disable sudo support for non-root user accounts on VMware,  Linux, Solaris, AIX and HPUX. (default is Enabled)
-U
This option replaces sudo with sesu for platforms that support seos.

url specifies the connection definition for each storage controller, switch or host with the format scheme://username:password@host

Storage Controllers
ontap://username:password|*@hostname[:port] (Manage ONTAP API and SSH)

Switches
cisco://username:password|*@cisco_switch (IOS, SANOS, NXOS) (SSH)
brocade://username:password|*@brocade_switch (SSH)
i10k://username:password|*@i10k_switch (McData Intrepid 10k EOSn) (SSH)
mcdata://username:password|*@mcdata_switch (EOS) (SSH, Telnet)
qlogic://username:password|*@qlogic_switch (SSH, Telnet)

Hosts
windows://[[domain|host\]username[:password | *]@]windows_server (WMI)
vmware://[username[:password | *]@]server[:port] (SSH)
linux://[username[:password | *]@]server[:port] (SSH)
solaris://[username[:password | *]@]server[:port] (SSH)
aix://[username[:password | *]@]server[:port] (SSH, Telnet)
powervm://[padmin[:password | *]@]server[:port] (SSH, Telnet)
hpux://[username[:password | *]@]server[:port] (SSH)

Specify ‘*’ for the password to be prompted.

Use quotes around each connection definition if specifying a password with special characters to avoid shell expansion and interpretation.
Username and password are optional in many cases. The program will use the username of the current user and prompt for a password when necessary.
Connections to Linux, VMware, Solaris, AIX and HP-UX can use SSH public key authentication if setup in your user’s environment.

WMI connections to Windows hosts will use the active user’s credentials if a domain\username and password are not present in the URL. Connections to the local Windows host must not contain a username or password.

Multiple urls may be used on the command line to collect data from multiple components at one time.

c:\> nsanity ontap://root:*@storage1 ontap://root:*@storage2
cisco://admin:*@switch windows://administrator:*@windows_host

The scope option, -S, controls which data will be collected.

‘survey’ is the most light weight data collection used for obtaining brief configuration
‘general’ adds diagnostic data and logs to what is collected in suvery mode
‘snapdrive’ adds SnapDrive specific diagnostic log files to general mode
‘snapmanager’ adds SnapManager product log files to snapdrive mode

Example Usage

To collect SnapDrive debug data and all general data from a Windows host called ‘myserver’ and you are a user with administrative rights use the following syntax.
c:\> nsanity.exe -S snapdrive windows://myserver

Or to collect SnapManager diagnostic data which will include SnapDrive data.
c:\> nsanity.exe -S snapmanager windows://myserver

If the Windows host is part of a cluster then add all cluster nodes.
c:\> nsanity.exe -S snapmanager windows://node1 windows://node2 windows://node3
* Components may be collected at the same time or separately, either way will produce the desired results.

1.  Running nSANity for OnTap (filer)

 NSANity for a single filer:

nsanity.exe ontap://<user name>:*@<filername>

Specify ‘*’ for the password to be prompted.

NSANity for multiple filers:

nsanity.exe ontap://<user name>:*@<filername> ontap://<user name>:*@<filername>

The following are the details that will be captured from the filer (in a 7 mode configuration).

Beginning data collection for Data ONTAP @ <filername>
Data ONTAP Operating in 7-Mode detected
Running vfiler-get-status
Running vfiler-get-allowed-protocols
Running vfiler-get-disallowed-protocols
Running cf-status
Running aggr-list-info
Running volume-get-root-name
Running volume-list-info
Running volume-options-list-info
Running qtree-list
Running net-resolve
Running net-ifconfig-get
Running nfs-status
Running nfs-exportfs-list-rules
Running nfs-exportfs-list-rules-2
Running snapmirror-get-status
Running system-get-info
Running system-get-version
Running system-get-ontapi-version
Running system-get-vendor-info
Running license-list-info
Running disk-list-info
Running disk-sanown-filer-list-info
Running disk-sanown-list-info
Running cifs-list-config
Running cifs-homedir-paths-get
Running vfiler-list-info
Running lun-get-occupied-size
Running lun-read-raw
Running ontapi list counters
Running slist $luns
Running lun aluadb show
Running lun stats -o -a
Running lun stats -i 1 -c 1 -o -a
Running lun stats -e
Running lun stats -b
Running vtic status
Running ic stats -v
Running rdfile $root_vol/etc/rc
Running rdfile $root_vol/etc/messages
Running rdfile $root_vol/etc/messages.0
Running rdfile $root_vol/etc/messages.1
Running rdfile $root_vol/etc/log/ems
Running rdfile $root_vol/etc/log/ems.0
Running rdfile $root_vol/etc/log/ems.1
Running rdfile $root_vol/etc/log/auditlog
Running rdfile $root_vol/etc/log/auditlog.0
Running rdfile $root_vol/etc/log/auditlog.1
Running rdfile $root_vol/etc/log/snapmirror
Running rdfile $root_vol/etc/log/snapmirror.0
Running rdfile $root_vol/etc/log/snapmirror.1
Running rdfile $root_vol/etc/ThinProvision.xml
Running rdfile $root_vol/etc/AccessControl.xml
Running date
Running uptime
Running options
Running printflag
Running registry walk options
Running registry walk state
Running cf monitor all
Running sysconfig -av
Running sysconfig -r
Running sysconfig -p
Running ifconfig -a
Running ifstat -a
Running vif status
Running vlan stat
Running netstat -rn
Running netstat -in
Running netstat -s
Running netstat -T
Running netstat -an
Running arp -an
Running mbstat
Running netdiag -v -b -e
Running netdiag -s -b -e
Running nis info
Running dns info
Running dcb show
Running cna show
Running environ chassis
Running environ chassis list-sensors
Running environ shelf
Running fcadmin config
Running fcadmin channels
Running fcadmin device_map
Running fcadmin link_state
Running fcadmin link_stats
Running fcadmin fcal_stats
Running storage show
Running storage show adapter -a
Running storage show disk -p
Running storage show switch
Running storage show port
Running storage show expander
Running storage show initiators
Running storage show tape
Running storage show mc
Running disk show -v
Running aggr status -r
Running aggr status -v
Running aggr status -b
Running vol status -r
Running vol status -v
Running vol status -b
Running vol status -l
Running df -r
Running df -rh
Running df -i
Running df -S
Running df -s
Running df -Ahr
Running aggr show_space
Running snap list -n
Running snap delta
Running snap list -A -n
Running stats show volume
Running stats show aggregate
Running stats show wafl
Running stats show disk
Running qtree status -v
Running sis config
Running sis stat
Running sis status
Running stats show sis
Running nfs status
Running exportfs
Running nfsstat -d
Running nfs_hist
Running stats show nfsv3
Running lun config_check -S
Running lun config_check -v
Running lun show -v
Running lun show
Running lun show -m
Running lun alignment show
Running stats show lun
Running snap autodelete $volumes
Running vol autosize $volumes
Running lun hist
Running igroup show -v
Running igroup show -t
Running portset show
Running fcp status
Running fcp show nodename
Running fcp show cfmode
Running fcp config
Running fcp show adapters -v
Running fcp show initiators -v
Running fcp stats -v
Running lun config
Running fcp portname show -v
Running fcp wwpn-alias show
Running stats show fcp
Running iscsi status
Running iscsi nodename
Running iscsi alias
Running iscsi connection show
Running iscsi initiator show
Running iscsi interface show
Running iscsi interface accesslist show
Running iscsi security show
Running iscsi session show
Running iscsi session show -v
Running iscsi portal show
Running iscsi tpgroup show
Running iscsi tpgroup alua show
Running iscsi stats -a
Running stats show iscsi
Running snapmirror status
Running snapmirror status -l
Running snapvault status
Running snapvault status -l
Data collection complete for <filername>
Ending collection @ 2013-05-22 12:39:57
Collected data saved to file, 20130522113352_nsanity.xml.gz

Note:

If multiple filers are selected the data will be captured individually per filer and stored in a single nsanity log with the time stamp.

2. Running nSANity for Brocade (FC Switch)

NSANity for a single switch:

nsanity.exe brocade://<username>:<password>@<switchname>

Specify ‘*’ for the password to be prompted.

NSANity for multiple switches:

nsanity.exe brocade://<username>:<password>@<switchname> brocade://<username>:<password>@<switchname>

The following are the details that will be captured from the switch

nSANity version: 1.2.10
Using internal command definitions
Running with scope general
Starting collection @ 2013-05-22 12:52:15
Beginning data collection for Brocade @ <switchname>
Running supportshow
Running version
Running alishow
Running cfgshow
Running cfgActvShow
Running configshow
Running dlsshow
Running fabricshow
Running fcrproxydevshow
Running fcrphydevshow
Running iodshow
Running islshow
Running interopmode
Running licenseshow
Running lsanzoneshow
Running nsshow
Running nsallshow
Running nscamshow
Running portbuffershow
Running portcfgshow
Running sfpshow
Running switchname
Running switchshow
Running switchstatusshow
Running trunkshow
Running uptime
Running zoneshow
Running agshow
Running ag –modeshow
Running ag –show
Running ag –mapshow
Running ag –pgshow
Running ag –failovershow
Running ag –failbackshow
Running ag –prefshow
Running ag –adsshow
Running ag –policyshow
Running ag –printalpamap
Running diagshow
Running errdump
Running porterrshow
Running portbuffershow
Running portlogdump
Running savecore -l
Running trunkdebug
Data collection complete for <switchname>
Ending collection @ 2013-05-22 13:04:15
Collected data saved to file, 20130522115215_nsanity.xml.gz

Note:

If multiple switches are selected the data will be captured individually per switch and stored in a single nsanity log with the time stamp.

Running nSANity for Linux

NSANity for a single Linux server:

nsanity.exe linux://[username[:password|*]@]server[:port](SSH)
Specify ‘*’ for the password to be prompted.

NSANity for multiple Linux servers:

nsanity.exe linux://[username[:password|*]@]server[:port](SSH) linux://[username[:password|*]@]server[:port](SSH)

Note:

In the below example, I have used the * option to prompt for a password and the –u option to disable sudo support.
If the username is not available in the /etc/sudoers with the NOPASSWD flag, it is recommended to use the –u option

C:\Users\<testuser>\Desktop\nsanity-win32\nsanity-win32>nsanity.exe linux://testuser:*@10.10.10.10 -u
nSANity version: 1.2.10
Using internal command definitions
Running with scope general
Enter password for testuser@10.10.10.10:
Starting collection @ 2013-09-18 12:52:39
Sudo disabled for non-priveleged user
Beginning data collection for Linux @ 10.10.10.10
Running vmstat -a
Running vmstat -d
Running iostat -c
Running iostat -d -n -N
Running iostat 2 3
Running for file in $( ls -tr /var/log/messages* | tail -4 ); do if [[ “${file}” =~ “gz” ]]; then zcat -v $file; else cat -v $file; fi; done
Running for file in $( ls -tr /var/log/syslog* | tail -4 ); do if [[ “${file}” =~ “gz” ]]; then zcat -v $file; else cat -v $file; fi; done
Running dmesg
Running cat -v /var/log/dmesg
Running vxdisk list
Running vxdisk -s list
Running vxdisk -e list
Running vxdisk -ev list
Running vxdisk -q list
Running for i in $( vxdisk -q list | awk ‘{print $1}’ ); do echo vxdisk list $i; vxdisk list $i; echo; done
Running for i in $( vxdisk -q list | awk ‘{print $1}’ ); do echo vxdisk check $i; vxdisk check $i; echo; done
Running vxdisk -o alldgs list
Running vxdisk path
Running vxdg list
Running for i in $( vxdg list | grep -v NAME | awk ‘{print $1}’ ); do echo vxstat -g $i; vxstat -g $i; echo; done
Running ls -alR /etc/vx
Running ls -alR /dev/vx/rdmp
Running ls -alR /dev/vx/dmp
Running vxdctl mode
Running vxdctl -c mode
Running vxdctl support
Running vxdctl list
Running vxdctl license
Running vxprint
Running vxprint -ht
Running vxprint -l
Running vxdmpadm listctlr all
Running vxdmpadm list dmpnode
Running for i in $( vxdmpadm list dmpnode | grep dmpdev | awk ‘{print $3}’ ); do echo vxdmpadm list dmpnode dmpnodename=$i; vxdmpadm list dmpnode dmpnodename=$i; echo; done
Running vxdmpadm stat restored
Running vxdmpadm gettune all
Running vxdmpadm listapm all
Running for i in $( vxdmpadm listapm all | awk ‘{print $1}’ ); do echo vxdmpadm listapm $i; vxdmpadm listapm $i; echo; done
Running vxdmpadm listenclosure all
Running for i in $( vxdmpadm listenclosure all | grep CONNECTED | awk ‘{print $1}’ ); do echo vxdmpadm getattr enclosure $i recoveryoption; vxdmpadm getattr enclosure $i recoveryoption; echo; echo vxdmpadm getattr enclosure $i iopolicy; vxdmpadm getattr enclosure $i iopolicy; echo; done
Running for i in $( vxdmpadm listenclosure all | grep CONNECTED | awk ‘{print $1}’ ); do echo vxdmpadm getdmpnode enclosure=${i}; vxdmpadm getdmpnode enclosure=${i}; echo; done
Running for i in $( vxdmpadm listctlr all | grep ^c | awk ‘{print $1}’ ); do echo vxdmpadm getsubpaths ctlr=${i}; vxdmpadm getsubpaths ctlr=${i}; echo; done
Running for i in $( vxdmpadm listenclosure all | grep CONNECTED | awk ‘{print $1}’ ); do for j in $( vxdmpadm getdmpnode enclosure=${i} | grep ^c | awk “{print \$1}” ); do echo vxdmpadm getsubpaths dmpnodename=${j}; vxdmpadm getsubpaths dmpnodename=${j}; echo; done; done
Running vxddladm listversion
Running vxddladm listjbod
Running vxddladm listsupport
Running for i in $( vxddladm listsupport all | awk ‘{print $1}’ ); do echo vxddladm listsupport libname=${i}; vxddladm listsupport libname=${i}; echo; done
Running vxddladm listexclude
Running vxlicrep
Running vxclustadm nidmap
Running vxclustadm -v nodestate
Running vxfenadm -g all -f /etc/vxfentab
Running vxfenadm -G all -f /etc/vxfentab
Running vxfenadm -d
Running vxfendebug -p
Running cfscluster status
Running ps -elf | grep vx
Running ps -elf | grep llt
Running ps -elf | grep VRTSvcs
Running lltconfig
Running lltconfig -a list
Running lltstat -n
Running lltstat -nvv
Running lltstat -p
Running gabconfig -a
Running hastatus -sum
Running hasys -display
Running cat -v /etc/vx/log/translog
Running cat -v /etc/VRTSvcs/conf/config/main.cf
Running cat -v /etc/VRTSvcs/conf/config/types.cf
Running for file in $( ls -t /etc/VRTSvcs/log/ | head -2 ); do cat -v $file; done
Running cat -v /etc/vx/cntrls.exclude
Running cat -v /etc/vx/disk.info
Running cat -v /etc/vxfentab
Running cat -v /etc/vxfendg
Running cat -v /etc/vxfenmode
Running for file in $( ls -tr /etc/vx/dmpevents.log* | tail -3 ); do cat -v $file; done
Running cat -v /etc/vx/disks.exclude
Running cat -v /etc/vx/enclr.exclude
Running ls -alR /etc/vx
Running cat /etc/llthosts
Running cat /etc/llttab
Running cat /etc/gabtab
Running uname -a
Running find /etc -maxdepth 1 -name *-release -type f -print -exec cat -v {} \;
Running rpm -qa
Running rpm -qai
Running date
Running uptime
Running sysctl -a
Running chkconfig –list
Running ps auxwww
Running runlevel
Running cat -v /proc/meminfo
Running cat -v /proc/cpuinfo
Running cat -v /proc/swaps
Running cat -v /proc/partitions
Running cat -v /proc/loadavg
Running cat -v /etc/selinux/config
Running selinuxenabled; echo $?
Running lsmod
Running lspci -vv -x
Running cat -v /proc/cmdline
Running cat -v /etc/sysctl.conf
Running ls -alR /dev
Running ls -alR /sys
Running cat -v /etc/modules.conf
Running cat -v /etc/modprobe.conf
Running cat -v /etc/modprobe.conf.local
Running find /etc/modprobe.d -type f -print -exec cat -v {} \;
Running cat -v /etc/bfa.conf
Running lsb_release -a
Running dmidecode
Running ls -al /usr/lib/libnl* && ls -al /usr/lib64/libnl*
Running ls -al /usr/lib/libqlsdm.so
Running ls -al /usr/lib/libemulexhbaapi.so && ls -al /usr/lib64/libemulexhbaapi.so
Running ifconfig -a
Running for i in $( ls /sys/class/net ); do ethtool $i; echo; done
Running netstat -vepan
Running netstat -rn
Running cat -v /etc/nsswitch.conf
Running cat -v /etc/resolv.conf
Running mount
Running cat -v /etc/fstab
Running cat -v /etc/fstab.iscsi
Running df
Running df -h
Running sfdisk -uS -l
Running fdisk -l
Running lsscsi -v -g
Running multipath -?
Running multipath -d -v3 -ll
Running multipath -d -ll
Running multipath -d -l
Running dmsetup info
Running lvm version
Running dmsetup version
Running dmsetup table
Running dmsetup status –verbose 99
Running lvm dumpconfig
Running cat -v /etc/lvm/lvm.conf
Running cat -v /etc/lvm.conf
Running cat -v /proc/scsi/scsi
Running find /proc/scsi -type f -print -exec cat {} \;
Running cat -v /etc/multipath.conf
Running cat -v /var/lib/multipath/bindings
Running pvdisplay -m
Running vgdisplay
Running lvdisplay -m
Running pvdisplay -v
Running vgdisplay -v
Running lvdisplay -v
Running iscsi-iname
Running cat -v /etc/iscsi/iscsid.conf
Running cat -v /etc/iscsi/initiatorname.iscsi
Running iscsiadm –mode node
Running iscsiadm -m session -P3
Running iscsi-ls
Running iscsi-ls -c
Running iscsi-ls -l
Running iscsid –version
Running san_version -v
Running sanlun version
Running sanlun lun show
Running sanlun lun show -v
Running sanlun lun show -p
Running sanlun lun show -pv
Running sanlun lun show -pm
Running sanlun fcp show adapter -v
Running for i in /sys/class/scsi_host/*; do echo $i/device/; ls -1 $i/device; echo; done
Running ls -al /sys/class/scsi_host/*/device
Running for file in /sys/class/scsi_host/*; do echo; for ent in ${file}/*; do echo -n “$ent: “; if [ -f “${ent}” ]; then if [ -r “${ent}” ]; then cat -v -s ${ent} 2>/dev/null; if [ “$?” != “0” ]; then echo; fi; fi; else echo; fi; done; done
Running ls -al /sys/class/iscsi_host/*/device
Running for file in /sys/class/iscsi_host/*; do echo; for ent in ${file}/*; do echo -n “$ent: “; if [ -f “${ent}” ]; then if [ -r “${ent}” ]; then cat -v -s ${ent} 2>/dev/null; if [ “$?” != “0” ]; then echo; fi; fi; else echo; fi; done; done
Running ls -al /sys/class/iscsi_connection/*/device
Running for file in /sys/class/iscsi_connection/*; do echo; for ent in ${file}/*; do echo -n “$ent: “; if [ -f “${ent}” ]; then if [ -r “${ent}” ]; then cat -v -s ${ent} 2>/dev/null; if [ “$?” != “0” ]; then echo; fi; fi; else echo; fi; done; done
Running ls -al /sys/class/iscsi_session/*/device
Running for file in /sys/class/iscsi_session/*; do echo; for ent in ${file}/*; do echo -n “$ent: “; if [ -f “${ent}” ]; then if [ -r “${ent}” ]; then cat -v -s ${ent} 2>/dev/null; if [ “$?” != “0” ]; then echo; fi; fi; else echo; fi; done; done
Running ls -al /sys/class/fc_host/*/device
Running for file in /sys/class/fc_host/*; do echo; for ent in ${file}/*; do echo -n “$ent: “; if [ -f “${ent}” ]; then if [ -r “${ent}” ]; then cat -v -s ${ent} 2>/dev/null; if [ “$?” != “0” ]; then echo; fi; fi; else echo; fi; done; done
Running for file in /sys/class/fc_host/*; do echo; for ent in ${file}/statistics/*; do echo -n “$ent: “; if [ -f “${ent}” ]; then if [ -r “${ent}” ]; then cat -v -s ${ent} 2>/dev/null; if [ “$?” != “0” ]; then echo; fi; fi; else echo; fi; done; done
Running ls -al /sys/class/fc_transport/*/device
Running for file in /sys/class/fc_transport/*; do echo; for ent in ${file}/*; do echo -n “$ent: “; if [ -f “${ent}” ]; then if [ -r “${ent}” ]; then cat -v -s ${ent} 2>/dev/null; if [ “$?” != “0” ]; then echo; fi; fi; else echo; fi; done; done
Running ls -al /sys/class/fc_remote_ports/*/device
Running for file in /sys/class/fc_remote_ports/*; do echo; for ent in ${file}/*; do echo -n “$ent: “; if [ -f “${ent}” ]; then if [ -r “${ent}” ]; then cat -v -s ${ent} 2>/dev/null; if [ “$?” != “0” ]; then echo; fi; fi; else echo; fi; done; done
Running ls -al /sys/block/*/device
Running for file in /sys/block/sd*; do echo; for ent in ${file}/device/*; do echo -n $ent; if [ -f “${ent}” ]; then if [ -r “${ent}” ]; then echo -n “: “; cat -v -s ${ent} 2>/dev/null; if [ “$?” != “0” ]; then echo; fi; fi; else echo; fi; done; done
Running for file in /sys/block/sd*; do echo ${file/#\/sys}; scsi_id -p pre-spc3-83 -g -s ${file/#\/sys}; done
Running for file in /sys/block/sd*; do echo ${file/#\/sys}; scsi_id -p pre-spc3-83 -g -x -a -s ${file/#\/sys}; done
Running for file in /sys/block/sd*; do echo ${file/#\/sys}; scsi_id -p 0x80 -g -s ${file/#\/sys}; done
Running for file in /sys/block/sd*; do echo ${file/#\/sys}; scsi_id -p 0x83 -g -s ${file/#\/sys}; done
Running for file in /sys/block/sd*; do echo ${file/#\/sys}; scsi_id -p 0x80 -g -x -a -s ${file/#\/sys}; done
Running for file in /sys/block/sd*; do echo ${file/#\/sys}; scsi_id -p 0x83 -g -x -a -s ${file/#\/sys}; done
Running for i in /sys/module/qla2xxx/parameters/*; do echo $i; cat -v $i; done
Running for i in /sys/module/qla3xxx/parameters/*; do echo $i; cat -v $i; done
Running for i in /sys/module/qla4xxx/parameters/*; do echo $i; cat -v $i; done
Running for i in /sys/module/qla8xxx/parameters/*; do echo $i; cat -v $i; done
Running for i in /sys/module/bnx2fc/parameters/*; do echo $i; cat -v $i; done
Running for i in /sys/module/bnx2x/parameters/*; do echo $i; cat -v $i; done
Running for i in /sys/module/cnic/parameters/*; do echo $i; cat -v $i; done
Running scli -z
Running scli -t
Running scli -c all
Running scli -i all
Running hbacmd listhbas
Running for wwpn in $( hbacmd listhbas | grep “^Port WWN” | awk ‘{print $4}’ ); do echo hbacmd hbaattributes $wwpn; hbacmd hbaattributes $wwpn; done
Running for wwpn in $( hbacmd listhbas | grep “^Port WWN” | awk ‘{print $4}’ ); do echo hbacmd portattributes $wwpn; hbacmd portattributes $wwpn; done
Running for wwpn in $( hbacmd listhbas | grep “^Port WWN” | awk ‘{print $4}’ ); do echo hbacmd portstatistics $wwpn; hbacmd portstatistics $wwpn; done
Running hbacmd exportsaninfo csv
Running modinfo qla2xxx
Running modinfo qla3xxx
Running modinfo qla4xxx
Running modinfo qisioctl
Running modinfo qla8xxx
Running modinfo lpfc
Running modinfo bnx2fc
Running modinfo bnx2x
Running modinfo cnic
Running cat -v /etc/hba.conf
Running iqlremote -v
Running qlremote -v
Running /etc/init.d/oracleasm listdisks
Running cat -v /etc/sysconfig/oracleasm
Running cat -v /etc/sysconfig/raw
Running cat -v /etc/sysconfig/rawdevices
Running cat -v /etc/raw
Running raw -qa
Running cat -v /etc/udev/udev.conf
Running cat -v /etc/udev/rules.d/*
Running cat -v /etc/syslog.conf
Running rpm -qa netapp.snapdrive
Running rpm -qa ontap.snapdrive
Running cat -v /opt/NetApp/snapdrive/snapdrive.conf || cat -v /opt/Ontap/snapdrive/snapdrive.conf
Running snapdrive version
Running smo version
Running smsap version
Running vxddladm gettune all
Data collection complete for 10.10.10.10
Ending collection @ 2013-09-18 12:56:39
Collected data saved to file, 20130918105239_nsanity.xml.gz

The file 20130918105239_nsanity.xml.gz will contain all the logs/data for Nsanity.

Where do I get this?

The software can be downloaded using the following link.

http://support.netapp.com/NOW/download/tools/nsanity/

Note: To download the tool you would require a valid NetApp account.

Leave a Reply


Hit Counter provided by technology news