(package maintainers, no worries on this one, it's just debugging tools)

Updated the debugging data collector to not exit on error of xiin, and also added some debugger outputs.
This commit is contained in:
inxi-svn 2011-06-21 20:53:38 +00:00
parent 6168b32895
commit e9e81c3ef5

145
inxi
View file

@ -1074,15 +1074,6 @@ error_handler()
16) 16)
error_message="$SCRIPT_NAME downloaded but the file data is corrupted. Purged data and using current version." error_message="$SCRIPT_NAME downloaded but the file data is corrupted. Purged data and using current version."
;; ;;
17)
error_message="Failed to download required file: $2\nMaybe the remote site is down or your networking is broken?"
;;
18)
error_message="$2 downloaded but the file data is corrupted. Unable to continue."
;;
19)
error_message="$2 downloaded but reports error on execution. Unable to continue."
;;
20) 20)
error_message="The option you selected has been deprecated. $2\nSee the -h (help) menu for currently supported options." error_message="The option you selected has been deprecated. $2\nSee the -h (help) menu for currently supported options."
;; ;;
@ -1248,8 +1239,8 @@ script_self_updater()
# args: $1 - debug data type: sys|xorg|disk # args: $1 - debug data type: sys|xorg|disk
debug_data_collector() debug_data_collector()
{ {
local xiin_app='' xiin_data_file='' xiin_download='' inxi_args='' local xiin_app='' xiin_data_file='' xiin_download='' inxi_args='' error=''
local xiin_data_dir="inxi-$(tr ' ' '-' <<< $HOSTNAME | tr '[A-Z]' '[a-z]' )-$1-$(date +%Y%m%d)" local debug_data_dir="inxi-$(tr ' ' '-' <<< $HOSTNAME | tr '[A-Z]' '[a-z]' )-$1-$(date +%Y%m%d)"
if [[ $B_RUNNING_IN_SHELL == 'true' ]];then if [[ $B_RUNNING_IN_SHELL == 'true' ]];then
echo "Starting debugging data collection type: $1" echo "Starting debugging data collection type: $1"
@ -1259,39 +1250,42 @@ debug_data_collector()
fi fi
echo 'completed' echo 'completed'
cd $SCRIPT_DATA_DIR cd $SCRIPT_DATA_DIR
if [[ -d $xiin_data_dir ]];then if [[ -d $debug_data_dir ]];then
echo 'Deleting previous xiin data directory...' echo 'Deleting previous xiin data directory...'
rm -rf $xiin_data_dir rm -rf $debug_data_dir
fi fi
mkdir $xiin_data_dir mkdir $debug_data_dir
if [[ -f $xiin_data_dir.tar.gz ]];then if [[ -f $debug_data_dir.tar.gz ]];then
echo 'Deleting previous tar.gz file...' echo 'Deleting previous tar.gz file...'
rm -f $xiin_data_dir.tar.gz rm -f $debug_data_dir.tar.gz
fi fi
echo 'Collecting system info: sensors, lsusb, lspci, lspci -v data, plus /proc data' echo 'Collecting system info: sensors, lsusb, lspci, lspci -v data, plus /proc data'
lsusb &> $xiin_data_dir/lsusb.txt lsusb &> $debug_data_dir/lsusb.txt
lspci &> $xiin_data_dir/lspci.txt lspci &> $debug_data_dir/lspci.txt
lspci -v &> $xiin_data_dir/lspci-v.txt lspci -v &> $debug_data_dir/lspci-v.txt
sensors &> $xiin_data_dir/sensors.txt ps aux &> $debug_data_dir/ps-aux.txt
cat $FILE_LSB_RELEASE &> $xiin_data_dir/lsb-release.txt sensors &> $debug_data_dir/sensors.txt
cat $FILE_ASOUND_DEVICE &> $xiin_data_dir/proc-asound-device.txt cat $FILE_LSB_RELEASE &> $debug_data_dir/lsb-release.txt
cat $FILE_ASOUND_VERSION &> $xiin_data_dir/proc-asound-version.txt cat $FILE_ASOUND_DEVICE &> $debug_data_dir/proc-asound-device.txt
cat $FILE_CPUINFO &> $xiin_data_dir/proc-cpu-info.txt cat $FILE_ASOUND_VERSION &> $debug_data_dir/proc-asound-version.txt
cat $FILE_MEMINFO &> $xiin_data_dir/proc-meminfo.txt cat $FILE_CPUINFO &> $debug_data_dir/proc-cpu-info.txt
cat $FILE_MODULES &> $xiin_data_dir/proc-modules.txt cat $FILE_MEMINFO &> $debug_data_dir/proc-meminfo.txt
check_recommends &> $xiin_data_dir/check-recommends.txt cat $FILE_MODULES &> $debug_data_dir/proc-modules.txt
check_recommends &> $debug_data_dir/check-recommends.txt
# note, only bash 4> supports ;;& for case, so using if/then here # note, only bash 4> supports ;;& for case, so using if/then here
if [[ $1 == 'disk' || $1 == 'sys' || $1 == 'all' ]];then if [[ $1 == 'disk' || $1 == 'sys' || $1 == 'all' ]];then
xiin_data_file=$SCRIPT_DATA_DIR/$xiin_data_dir/xiin-sys.txt xiin_data_file=$SCRIPT_DATA_DIR/$debug_data_dir/xiin-sys.txt
echo 'Collecting networking data...' echo 'Collecting networking data...'
ifconfig &> $xiin_data_dir/ifconfig.txt ifconfig &> $debug_data_dir/ifconfig.txt
echo 'Downloading required tree traverse tool xiin...' echo 'Downloading required tree traverse tool xiin...'
# -Nc is creating really weird download anomolies, so using -O instead # -Nc is creating really weird download anomolies, so using -O instead
xiin_download="$( wget -q -O - http://inxi.googlecode.com/svn/branches/xiin/xiin )" xiin_download="$( wget -q -O - http://inxi.googlecode.com/svn/branches/xiin/xiin )"
# if nothing got downloaded kick out error, otherwise we'll use an older version # if nothing got downloaded kick out error, otherwise we'll use an older version
if [[ $? -gt 0 && ! -f xiin ]];then if [[ $? -gt 0 && ! -f xiin ]];then
error_handler 17 'xiin' echo -e "ERROR: Failed to download required file: xiin\nMaybe the remote site is down or your networking is broken?"
echo "Continuing with incomplete data collection."
echo 'xiin download failed and no existing xiin' >> $debug_data_dir/xiin-error.txt
elif [[ -n $( grep -s 'checkPython' <<< "$xiin_download" ) || -f xiin ]];then elif [[ -n $( grep -s 'checkPython' <<< "$xiin_download" ) || -f xiin ]];then
if [[ -n $( grep -s 'checkPython' <<< "$xiin_download" ) ]];then if [[ -n $( grep -s 'checkPython' <<< "$xiin_download" ) ]];then
echo 'Updating xiin from remote location' echo 'Updating xiin from remote location'
@ -1301,89 +1295,94 @@ debug_data_collector()
fi fi
echo 'Running xiin tool now on /sys...' echo 'Running xiin tool now on /sys...'
python ./xiin -d /sys -f $xiin_data_file python ./xiin -d /sys -f $xiin_data_file
if [[ $? -ne 0 ]];then if [[ $? -ne 0 ]];then
echo "xiin exited with error $? - removing data file before exiting." error=$?
echo -e "ERROR: xiin exited with error $error - removing data file.\nContinuing with incomplete data collection."
echo "Continuing with incomplete data collection."
rm -f $xiin_data_file rm -f $xiin_data_file
error_handler 19 'xiin' echo "xiin data generation failed with python error $error" >> $debug_data_dir/xiin-error.txt
fi fi
else else
error_handler 18 'xiin' echo -e "ERROR: xiin downloaded but the program file data is corrupted.\nContinuing with incomplete data collection."
echo "xiin downloaded but the program file data is corrupted." >> $debug_data_dir/xiin-error.txt
fi fi
fi fi
if [[ $1 == 'xorg' || $1 == 'all' ]];then if [[ $1 == 'xorg' || $1 == 'all' ]];then
if [[ $B_RUNNING_IN_X != 'true' ]];then if [[ $B_RUNNING_IN_X != 'true' ]];then
echo 'Warning: only some of the data collection can occur if you are not in X' echo 'Warning: only some of the data collection can occur if you are not in X'
touch $xiin_data_dir/warning-user-not-in-x touch $debug_data_dir/warning-user-not-in-x
fi fi
if [[ $B_ROOT == 'true' ]];then if [[ $B_ROOT == 'true' ]];then
echo 'Warning: only some of the data collection can occur if you are running as Root user' echo 'Warning: only some of the data collection can occur if you are running as Root user'
touch $xiin_data_dir/warning-root-user touch $debug_data_dir/warning-root-user
fi fi
echo 'Collecting Xorg log and xorg.conf files' echo 'Collecting Xorg log and xorg.conf files'
if [[ -e $FILE_XORG_LOG ]];then if [[ -e $FILE_XORG_LOG ]];then
cat $FILE_XORG_LOG &> $xiin_data_dir/xorg-log-file.txt cat $FILE_XORG_LOG &> $debug_data_dir/xorg-log-file.txt
else else
touch $xiin_data_dir/no-xorg-log-file touch $debug_data_dir/no-xorg-log-file
fi fi
if [[ -e /etc/X11/xorg.conf ]];then if [[ -e /etc/X11/xorg.conf ]];then
cp /etc/X11/xorg.conf $xiin_data_dir cp /etc/X11/xorg.conf $debug_data_dir
else else
touch $xiin_data_dir/no-xorg-conf-file touch $debug_data_dir/no-xorg-conf-file
fi fi
if [[ -n $( ls /etc/X11/xorg.conf.d/ 2>/dev/null ) ]];then if [[ -n $( ls /etc/X11/xorg.conf.d/ 2>/dev/null ) ]];then
ls /etc/X11/xorg.conf.d &> $xiin_data_dir/ls-etc-x11-xorg-conf-d.txt ls /etc/X11/xorg.conf.d &> $debug_data_dir/ls-etc-x11-xorg-conf-d.txt
cp /etc/X11/xorg.conf.d $xiin_data_dir cp /etc/X11/xorg.conf.d $debug_data_dir
else else
touch $xiin_data_dir/no-xorg-conf-d-files touch $debug_data_dir/no-xorg-conf-d-files
fi fi
echo 'Collecting X, xprop, glxinfo, xrandr, xdpyinfo data...' echo 'Collecting X, xprop, glxinfo, xrandr, xdpyinfo data...'
xprop -root &> $xiin_data_dir/xprop_root.txt xprop -root &> $debug_data_dir/xprop_root.txt
glxinfo &> $xiin_data_dir/glxinfo.txt glxinfo &> $debug_data_dir/glxinfo.txt
xdpyinfo &> $xiin_data_dir/xdpyinfo.txt xdpyinfo &> $debug_data_dir/xdpyinfo.txt
xrandr &> $xiin_data_dir/xrandr.txt xrandr &> $debug_data_dir/xrandr.txt
X -version &> $xiin_data_dir/x-version.txt X -version &> $debug_data_dir/x-version.txt
Xorg -version &> $xiin_data_dir/xorg-version.txt Xorg -version &> $debug_data_dir/xorg-version.txt
fi fi
if [[ $1 == 'disk' || $1 == 'all' ]];then if [[ $1 == 'disk' || $1 == 'all' ]];then
echo 'Collecting dev, label, disk, uuid data, df...' echo 'Collecting dev, label, disk, uuid data, df...'
ls -l /dev &> $xiin_data_dir/dev-data.txt ls -l /dev &> $debug_data_dir/dev-data.txt
ls -l /dev/disk &> $xiin_data_dir/dev-disk-data.txt ls -l /dev/disk &> $debug_data_dir/dev-disk-data.txt
ls -l /dev/disk/by-id &> $xiin_data_dir/dev-disk-id-data.txt ls -l /dev/disk/by-id &> $debug_data_dir/dev-disk-id-data.txt
ls -l /dev/disk/by-label &> $xiin_data_dir/dev-disk-label-data.txt ls -l /dev/disk/by-label &> $debug_data_dir/dev-disk-label-data.txt
ls -l /dev/disk/by-uuid &> $xiin_data_dir/dev-disk-uuid-data.txt ls -l /dev/disk/by-uuid &> $debug_data_dir/dev-disk-uuid-data.txt
ls -l /dev/disk/by-path &> $xiin_data_dir/dev-disk-path-data.txt ls -l /dev/disk/by-path &> $debug_data_dir/dev-disk-path-data.txt
readlink /dev/root &> $xiin_data_dir/dev-root.txt readlink /dev/root &> $debug_data_dir/dev-root.txt
df -h -T --exclude-type=aufs --exclude-type=squashfs --exclude-type=unionfs --exclude-type=devtmpfs --exclude-type=tmpfs --exclude-type=iso9660 --exclude-type=devfs --exclude-type=linprocfs --exclude-type=sysfs --exclude-type=fdescfs &> $xiin_data_dir/df-h-T-excludes.txt df -h -T --exclude-type=aufs --exclude-type=squashfs --exclude-type=unionfs --exclude-type=devtmpfs --exclude-type=tmpfs --exclude-type=iso9660 --exclude-type=devfs --exclude-type=linprocfs --exclude-type=sysfs --exclude-type=fdescfs &> $debug_data_dir/df-h-T-excludes.txt
swapon -s &> $xiin_data_dir/swapon-s.txt swapon -s &> $debug_data_dir/swapon-s.txt
df --exclude-type=aufs --exclude-type=squashfs --exclude-type=unionfs --exclude-type=devtmpfs --exclude-type=tmpfs --exclude-type=iso9660 &> $xiin_data_dir/df-excludes.txt df --exclude-type=aufs --exclude-type=squashfs --exclude-type=unionfs --exclude-type=devtmpfs --exclude-type=tmpfs --exclude-type=iso9660 &> $debug_data_dir/df-excludes.txt
cat $FILE_PARTITIONS &> $xiin_data_dir/proc-partitions.txt cat $FILE_PARTITIONS &> $debug_data_dir/proc-partitions.txt
cat $FILE_SCSI &> $xiin_data_dir/proc-scsi.txt cat $FILE_SCSI &> $debug_data_dir/proc-scsi.txt
cat $FILE_MOUNTS &> $xiin_data_dir/proc-mounts.txt cat $FILE_MOUNTS &> $debug_data_dir/proc-mounts.txt
cat /proc/sys/dev/cdrom/info &> $xiin_data_dir/proc-cdrom-info.txt cat /proc/sys/dev/cdrom/info &> $debug_data_dir/proc-cdrom-info.txt
ls /proc/ide/ &> $xiin_data_dir/proc-ide.txt ls /proc/ide/ &> $debug_data_dir/proc-ide.txt
cat /proc/ide/*/* &> $xiin_data_dir/proc-ide-hdx-cat.txt cat /proc/ide/*/* &> $debug_data_dir/proc-ide-hdx-cat.txt
cat /etc/fstab &> $xiin_data_dir/etc-fstab.txt cat /etc/fstab &> $debug_data_dir/etc-fstab.txt
cat /etc/mtab &> $xiin_data_dir/etc-mtab.txt cat /etc/mtab &> $debug_data_dir/etc-mtab.txt
inxi_args='pluo' inxi_args='pluo'
fi fi
echo 'Creating inxi output file now. This can take a few seconds...' echo 'Creating inxi output file now. This can take a few seconds...'
$SCRIPT_NAME -F$inxi_args -c 0 -@ 8 > $xiin_data_dir/inxi-F${inxi_args}.txt $SCRIPT_NAME -F$inxi_args -c 0 -@ 8 > $debug_data_dir/inxi-F${inxi_args}.txt
cp $LOG_FILE $SCRIPT_DATA_DIR/$xiin_data_dir cp $LOG_FILE $SCRIPT_DATA_DIR/$debug_data_dir
echo 'Creating tar.gz compressed file of this material now. Contents:' echo 'Creating tar.gz compressed file of this material now. Contents:'
echo '-------------------------' echo '-------------------------'
tar -cvzf $xiin_data_dir.tar.gz $xiin_data_dir tar -cvzf $debug_data_dir.tar.gz $debug_data_dir
echo '-------------------------' echo '-------------------------'
echo 'Cleaning up leftovers...' echo 'Cleaning up leftovers...'
rm -rf $xiin_data_dir rm -rf $debug_data_dir
echo 'Testing gzip file integrity...' echo 'Testing gzip file integrity...'
gzip -t $xiin_data_dir.tar.gz gzip -t $debug_data_dir.tar.gz
if [[ $? -gt 0 ]];then if [[ $? -gt 0 ]];then
echo 'Data in gz is corrupted, removing gzip file, try running data collector again.' echo 'Data in gz is corrupted, removing gzip file, try running data collector again.'
rm -f $xiin_data_dir.tar.gz rm -f $debug_data_dir.tar.gz
echo "Data in gz is corrupted, removed gzip file" >> $debug_data_dir/gzip-error.txt
else else
echo 'All done, you can find your data gzipped directory here:' echo 'All done, you can find your data gzipped directory here:'
echo $SCRIPT_DATA_DIR/$xiin_data_dir.tar.gz echo $SCRIPT_DATA_DIR/$debug_data_dir.tar.gz
echo 'You can upload this here using most file managers: ftp.techpatterns.com/incoming' echo 'You can upload this here using most file managers: ftp.techpatterns.com/incoming'
echo 'then let a maintainer know it is uploaded.' echo 'then let a maintainer know it is uploaded.'
fi fi