From 6ae2e5d7ce3ef980f7664d7a8fc8556f96a1932c Mon Sep 17 00:00:00 2001 From: inxi-svn Date: Mon, 11 Aug 2014 23:02:30 +0000 Subject: [PATCH 1/7] branch three, inxi test --- inxi | 270 +++----- inxi.1 | 568 ---------------- inxi.changelog | 1728 ------------------------------------------------ 3 files changed, 105 insertions(+), 2461 deletions(-) mode change 100755 => 100644 inxi delete mode 100755 inxi.1 delete mode 100755 inxi.changelog diff --git a/inxi b/inxi old mode 100755 new mode 100644 index 180abd9..ece0fcd --- a/inxi +++ b/inxi @@ -1,8 +1,8 @@ #!/usr/bin/env bash ######################################################################## #### Script Name: inxi -#### Version: 2.1.29 -#### Date: 2014-08-08 +#### Version: 2.1.27 +#### Date: 2014-05-02 #### Patch Number: 00 ######################################################################## #### SPECIAL THANKS @@ -1575,7 +1575,7 @@ debug_data_collector() local xiin_app='' xiin_data_file='' xiin_download='' error='' b_run_xiin='false' local debug_data_dir='' bsd_string='' xorg_d_files='' xorg_file='' a_distro_ids='' local completed_gz_file='' xiin_file='xiin.py' ftp_upload='ftp.techpatterns.com/incoming' - local Line='-------------------------' root_string='' + local Line='-------------------------' local start_directory=$( pwd ) local host=$( tr '[A-Z]' '[a-z]' <<< "$HOSTNAME" ) if [[ -n $host ]];then @@ -1586,11 +1586,8 @@ debug_data_collector() if [[ -n $BSD_TYPE ]];then bsd_string="-$BSD_TYPE" fi - if [[ $( whoami ) == 'root' ]];then - root_string='-root' - fi - debug_data_dir="inxi$bsd_string-$host-$(date +%Y%m%d-%H%M%S)-$1$root_string" + debug_data_dir="inxi$bsd_string-$host-$(date +%Y%m%d-%H%M%S)-$1" if [[ $B_IRC == 'false' ]];then if [[ -n $ALTERNATE_FTP ]];then @@ -1672,8 +1669,6 @@ debug_data_collector() ls /usr/bin/gcc* &> $debug_data_dir/gcc-sys-versions.txt gcc --version &> $debug_data_dir/gcc-version.txt clang --version &> $debug_data_dir/clang-version.txt - cat /etc/src.conf &> $debug_data_dir/bsd-etc-src-conf.txt - cat /etc/make.conf &> $debug_data_dir/bsd-etc-make-conf.txt cat /etc/issue &> $debug_data_dir/etc-issue.txt cat $FILE_LSB_RELEASE &> $debug_data_dir/lsb-release.txt cat $FILE_OS_RELEASE &> $debug_data_dir/os-release.txt @@ -1832,7 +1827,7 @@ debug_data_collector() echo 'Creating inxi output file now. This can take a few seconds...' echo "Starting $SCRIPT_NAME from: $start_directory" cd $start_directory - $SCRIPT_PATH/$SCRIPT_NAME -FRfrploudixxx -c 0 -@ 8 -y 120 > $SCRIPT_DATA_DIR/$debug_data_dir/inxi-FRfrploudixxxy120.txt + $SCRIPT_PATH/$SCRIPT_NAME -FRfrploudxxx -c 0 -@ 8 -y 120 > $SCRIPT_DATA_DIR/$debug_data_dir/inxi-FRfrploudxxxy120.txt cp $LOG_FILE $SCRIPT_DATA_DIR/$debug_data_dir if [[ -f $SCRIPT_DATA_DIR/$debug_data_dir.tar.gz ]];then echo "Found and removing previous tar.gz data file: $debug_data_dir.tar.gz" @@ -3467,7 +3462,7 @@ get_audio_data() else if (/kernel modules:/) { modules[audioCard] = modules[audioCard] gensub( /(.*): (.*)/ ,"\\2" ,"g" ,$0 ) "" } - else if (/^[[:space:]]*I\/O/) { + else if (/I\/O/) { portsTemp = gensub(/\t*I\/O ports at (.*) \[.*\]/,"\\1","g",$0) ports[audioCard] = ports[audioCard] portsTemp " " } @@ -4170,7 +4165,7 @@ get_desktop_environment() eval $LOGFS # set the default, this function only runs in X, if null, don't print data out - local desktop_environment='' xprop_root='' version2='' + local desktop_environment='' xprop_root='' local version='' version_data='' toolkit='' # works on 4, assume 5 will id the same, why not, no need to update in future @@ -4256,7 +4251,7 @@ get_desktop_environment() desktop_environment="MATE" # note, GNOME_DESKTOP_SESSION_ID is deprecated so we'll see how that works out # https://bugzilla.gnome.org/show_bug.cgi?id=542880 - elif [[ -n $GNOME_DESKTOP_SESSION_ID || $XDG_CURRENT_DESKTOP == 'GNOME' ]]; then + elif [[ -n $GNOME_DESKTOP_SESSION_ID ]]; then if type -p gnome-shell &>/dev/null;then version=$( get_program_version 'gnome-shell' 'gnome' '3' ) elif type -p gnome-about &>/dev/null;then @@ -4320,25 +4315,18 @@ get_desktop_environment() # note: openbox-lxde --version may be present, but returns openbox data version=$( get_program_version 'openbox' '^openbox' '2' ) if [[ $XDG_CURRENT_DESKTOP == 'LXDE' || \ - -n $( grep -is '/lxsession' <<< "$Ps_aux_Data" ) ]];then + -n $( grep -is 'lxde' <<< "$Ps_aux_Data" ) ]];then if [[ -n $version ]];then version="(Openbox $version)" fi desktop_environment='LXDE' - elif [[ $XDG_CURRENT_DESKTOP == 'Razor' || $XDG_CURRENT_DESKTOP == 'LXQt' ]] || \ - [[ -n $( grep -Eis '(razor-desktop|lxqt-session)' <<< "$Ps_aux_Data" ) ]];then - if [[ -n $( grep -is 'lxqt-session' <<< "$Ps_aux_Data" ) ]];then - desktop_environment='LXQt' - elif [[ -n $( grep -is 'razor-desktop' <<< "$Ps_aux_Data" ) ]];then - desktop_environment='Razor-Qt' - else - desktop_environment='LX-Qt-Variant' - fi + elif [[ -n $( grep -is 'razor-desktop' <<< "$Ps_aux_Data" ) ]];then if [[ -n $version ]];then version="(Openbox $version)" fi + desktop_environment='Razor-QT' else - desktop_environment='Openbox' + desktop_environment='Openbox' fi elif [[ -n $( grep -is 'ICEWM' <<< "$xprop_root" ) ]];then version=$( get_program_version 'icewm' '^icewm' '2' ) @@ -6321,7 +6309,6 @@ get_module_version_number() eval $LOGFE } - ## create array of network cards get_networking_data() { @@ -6332,64 +6319,72 @@ get_networking_data() IFS=$'\n' A_NETWORK_DATA=( $( echo "$Lspci_v_Data" | gawk ' - # NOTE: see version 2.1.28 or earlier for old logic if for some reason it is needed again - # that used a modified string made from nic name for index, why, I have no idea, makes no sense and leads - # to wrong ordered output as well. get_audio_data uses the old logic for now too. BEGIN { IGNORECASE=1 - counter=0 + counter=0 # required to handle cases of > 1 instance of the same chipset } - /^[0-9a-f:\.]+ ((ethernet|network) (controller|bridge)|infiniband)/ || /^[0-9a-f:\.]+ [^:]+: .*(ethernet|infiniband|network).*$/ { - aNic[counter]=gensub(/^[0-9a-f:\.]+ [^:]+: (.+)$/,"\\1","g",$0) - #gsub(/realtek semiconductor/, "Realtek", aNic[counter]) - #gsub(/davicom semiconductor/, "Davicom", aNic[counter]) + /^[0-9a-f:\.]+ (ethernet|network) (controller|bridge)/ || /^[0-9a-f:\.]+ [^:]+: .*(ethernet|network).*$/ { + nic=gensub(/^[0-9a-f:\.]+ [^:]+: (.+)$/,"\\1","g",$0) + #gsub(/realtek semiconductor/, "Realtek", nic) + #gsub(/davicom semiconductor/, "Davicom", nic) # The doublequotes are necessary because of the pipes in the variable. - gsub(/'"$BAN_LIST_NORMAL"'/, "", aNic[counter]) - gsub(/,/, " ", aNic[counter]) - gsub(/^ +| +$/, "", aNic[counter]) - gsub(/ [ \t]+/, " ", aNic[counter]) - aPciBusId[counter] = gensub(/(^[0-9a-f:\.]+) [^:]+: .+$/,"\\1","g",$0) + gsub(/'"$BAN_LIST_NORMAL"'/, "", nic) + gsub(/,/, " ", nic) + gsub(/^ +| +$/, "", nic) + gsub(/ [ \t]+/, " ", nic) + # construct a unique string ending for each chipset detected, this allows for + # multiple instances of the same exact chipsets, ie, dual gigabit + nic = nic "~~" counter++ + aPciBusId[nic] = gensub(/(^[0-9a-f:\.]+) [^:]+: .+$/,"\\1","g",$0) + # I do not understand why incrementing a string index makes sense? + eth[nic]++ while ( getline && !/^$/ ) { gsub(/,/, "", $0) - if ( /^[[:space:]]*I\/O/ ) { - aPorts[counter] = aPorts[counter] $4 " " + if ( /I\/O/ ) { + ports[nic] = ports[nic] $4 " " } if ( /driver in use/ ) { - aDrivers[counter] = aDrivers[counter] gensub( /(.*): (.*)/ ,"\\2" ,"g" ,$0 ) "" + drivers[nic] = drivers[nic] gensub( /(.*): (.*)/ ,"\\2" ,"g" ,$0 ) "" } else if ( /kernel modules/ ) { - aModules[counter] = aModules[counter] gensub( /(.*): (.*)/ ,"\\2" ,"g" ,$0 ) "" + modules[nic] = modules[nic] gensub( /(.*): (.*)/ ,"\\2" ,"g" ,$0 ) "" } } - counter++ } + END { - for (i=0;i 1 ) { + a[j] = eth[i] "x " i + } + else { + a[j] = i + } ## note: this loses the plural ports case, is it needed anyway? - if ( aPorts[i] != "" ) { - usePorts = aPorts[i] + if ( ports[i] != "" ) { + usePorts = ports[i] } - if ( aDrivers[i] != "" ) { - useDrivers = aDrivers[i] + if ( drivers[i] != "" ) { + useDrivers = drivers[i] } - if ( aModules[i] != "" ) { - useModules = aModules[i] - } - if ( aNic[i] != "" ) { - useNic=aNic[i] + if ( modules[i] != "" ) { + useModules = modules[i] } if ( aPciBusId[i] != "" ) { usePciBusId = aPciBusId[i] } # create array primary item for master array + # and strip out the counter again, this handled dual cards with same chipset + sub( /~~[0-9]+$/, "", a[j] ) sub( / $/, "", usePorts ) # clean off trailing whitespace - print useNic "," useDrivers "," usePorts "," useModules, "," usePciBusId + print a[j] "," useDrivers "," usePorts "," useModules, "," usePciBusId + j++ } }' ) ) IFS="$ORIGINAL_IFS" @@ -6406,59 +6401,42 @@ get_networking_data() get_network_advanced_data() { eval $LOGFS - local a_network_adv_working='' if_data='' working_path='' working_uevent_path='' dir_path='' - local if_id='' speed='' duplex='' mac_id='' oper_state='' chip_id='' b_path_made='true' - local usb_data='' usb_vendor='' usb_product='' product_path='' driver_test='' array_counter=0 - local full_path='' - # we need to change to holder since we are updating the main array - IFS=$'\n' - local a_main_working=(${A_NETWORK_DATA[@]}) - IFS="$ORIGINAL_IFS" + local a_network_adv_working='' if_path='' working_path='' working_uevent_path='' dir_path='' + local if_id='' speed='' duplex='' mac_id='' oper_state='' chip_id='' + local usb_data='' usb_vendor='' usb_product='' product_path='' driver_test='' - for (( i=0; i < ${#a_main_working[@]}; i++ )) + for (( i=0; i < ${#A_NETWORK_DATA[@]}; i++ )) do IFS="," - a_network_adv_working=( ${a_main_working[i]} ) - IFS="$ORIGINAL_IFS" + a_network_adv_working=( ${A_NETWORK_DATA[i]} ) # reset these every go round driver_test='' - if_data='' - product_path='' + if_id='' + speed='' + duplex='' + mac_id='' + oper_state='' usb_data='' - usb_product='' - usb_vendor='' - working_path='' - working_uevent_path='' + chip_id='' if [[ -z $( grep '^usb-' <<< ${a_network_adv_working[4]} ) ]];then # note although this may exist technically don't use it, it's a virtual path # and causes weird cat errors when there's a missing file as well as a virtual path # /sys/bus/pci/devices/0000:02:02.0/net/eth1 # real paths are: /sys/devices/pci0000:00/0000:00:1e/0/0000:02:02.0/net/eth1/uevent # and on older debian kernels: /sys/devices/pci0000:00/0000:02:02.0/net:eth1/uevent - # but broadcom shows this sometimes, and older kernels maybe: - # /sys/devices/pci0000:00/0000:00:01.0/0000:05:00.0/net/eth0/ + # but broadcom shows this sometimes: # /sys/devices/pci0000:00/0000:00:03.0/0000:03:00.0/ssb0:0/uevent:['DRIVER=b43', 'MODALIAS=ssb:v4243id0812rev0D']: - # echo a ${a_network_adv_working[4]} - if [[ -d /sys/bus/pci/devices/ ]];then - working_path="/sys/bus/pci/devices/0000:${a_network_adv_working[4]}" - elif [[ -d /sys/devices/pci0000:00/ ]];then - working_path="/sys/devices/pci0000:00/0000:00:01.0/0000:${a_network_adv_working[4]}" - fi - #echo wp ${a_network_adv_working[4]} $i + working_path="/sys/bus/pci/devices/0000:${a_network_adv_working[4]}" # now we want the real one, that xiin also displays, without symbolic links. - if [[ -n $working_path && -e $working_path ]];then + if [[ -e $working_path ]];then working_path=$( readlink -f $working_path 2>/dev/null ) - else - working_path=$( find -P /sys/ -type d -name "*:${a_network_adv_working[4]}" 2>/dev/null ) - # just on off chance we get two returns, just one one - working_path=${working_path%% *} - fi - # sometimes there is another directory between the path and /net - if [[ -n $working_path && ! -e $working_path/net ]];then - # using find here, probably will need to also use it in usb part since the grep - # method seems to not be working now. Slice off the rest, which leaves the basic path - working_path=$( find $working_path/*/net/*/uevent 2>/dev/null | \ - sed 's|/net.*||' ) + # sometimes there is another directory between the path and /net + if [[ ! -e $working_path/net ]];then + # using find here, probably will need to also use it in usb part since the grep + # method seems to not be working now. Slice off the rest, which leaves the basic path + working_path=$( find $working_path/*/net/*/uevent 2>/dev/null | \ + sed 's|/net.*||' ) + fi fi # working_path=$( ls /sys/devices/pci*/*/0000:${a_network_adv_working[4]}/net/*/uevent ) else @@ -6481,6 +6459,7 @@ get_network_advanced_data() product_path=$( grep -s "$usb_product" /sys/devices/pci*/*/usb*/*/*/idProduct | \ sed -e "s/idProduct:$usb_product//" -e '/driver/d' ) fi + # make sure it's the right product/vendor match here, it will almost always be but let's be sure if [[ -n $working_path && -n $product_path ]] && [[ $working_path == $product_path ]];then #if [[ -n $working_path ]];then @@ -6498,89 +6477,50 @@ get_network_advanced_data() a_network_adv_working[1]=$driver_test fi fi - #echo wp: $working_path log_function_data "PRE: working_path: $working_path\nworking_uevent_path: $working_uevent_path" + # this applies in two different cases, one, default, standard, two, for usb, this is actually # the short path, minus the last longer numeric directory name, ie: # from debian squeeze 2.6.32-5-686: # /sys/devices/pci0000:00/0000:00:0b.1/usb1/1-1/net/wlan0/address if [[ -e $working_path/net ]];then - # in cases like infiniband dual port devices, there can be two ids, like ib0 ib1, - # with line break in output - if_data=$( ls $working_path/net 2>/dev/null ) - b_path_made='false' + if_path=$( ls $working_path/net 2>/dev/null ) + if_id=$if_path + working_path=$working_path/net/$if_path # this is the normal usb detection if the first one didn't work elif [[ -n $usb_data && -e $working_uevent_path/net ]];then - if_data=$( ls $working_uevent_path/net 2>/dev/null ) - working_path=$working_uevent_path/net/$if_data + if_path=$( ls $working_uevent_path/net 2>/dev/null ) + if_id=$if_path + working_path=$working_uevent_path/net/$if_path # 2.6.32 debian lenny kernel shows not: /net/eth0 but /net:eth0 - elif [[ -n ${working_path/\/sys*/} ]];then - if_data=$( ls $working_path 2>/dev/null | grep 'net:' ) - if [[ -n $if_data ]];then - working_path=$working_path/$if_data - # we won't be using this for path any more, just the actual if id output - # so prep it for the loop below - if_data=$( cut -d ':' -f 2 <<< "$if_data" ) + else + if_path=$( ls $working_path 2>/dev/null | grep 'net:' ) + if_id=$( cut -d ':' -f 2 <<< "$if_path" ) + working_path=$working_path/$if_path + fi + log_function_data "POST: working_path: $working_path\nif_path: $if_path - if_id: $if_id" + + if [[ -n $if_path ]];then + if [[ -r $working_path/speed ]];then + speed=$( cat $working_path/speed 2>/dev/null ) + fi + if [[ -r $working_path/duplex ]];then + duplex=$( cat $working_path/duplex 2>/dev/null ) + fi + if [[ -r $working_path/address ]];then + mac_id=$( cat $working_path/address 2>/dev/null ) + fi + if [[ -r $working_path/operstate ]];then + oper_state=$( cat $working_path/operstate 2>/dev/null ) fi fi - # just in case we got a failed path, like /net or /, clear it out for tests below - if [[ -n ${working_path/\/sys*/} ]];then - working_path='' + + if [[ -n ${a_network_adv_working[10]} ]];then + chip_id=${a_network_adv_working[10]} fi - #echo id: $if_data - log_function_data "POST: working_path: $working_path\nif_data: $if_data - if_id: $if_id" - # there are virtual devices that will have no if data but which we still want in the array - # as it loops. These will also have null working_path as well since no **/net is found - # echo if_data: $if_data - if [[ -z $if_data ]];then - if_data='null-if-id' - fi - ## note: in cases of dual ports with different ids, this loop will create extra array items - for if_item in $if_data - do - chip_id= - duplex='' - full_path='' - if_id='' - mac_id='' - oper_state='' - speed='' - # strip out trailing spaces - if_item=${if_item%% } - if_id=$if_item - #echo wp1: $working_path - if [[ $working_path != '' ]];then - if [[ $b_path_made == 'false' ]];then - full_path=$working_path/net/$if_item - else - full_path=$working_path - fi - if [[ -r $full_path/speed ]];then - speed=$( cat $full_path/speed 2>/dev/null ) - fi - if [[ -r $full_path/duplex ]];then - duplex=$( cat $full_path/duplex 2>/dev/null ) - fi - if [[ -r $full_path/address ]];then - mac_id=$( cat $full_path/address 2>/dev/null ) - fi - if [[ -r $full_path/operstate ]];then - oper_state=$( cat $full_path/operstate 2>/dev/null ) - fi - if [[ -n ${a_network_adv_working[10]} ]];then - chip_id=${a_network_adv_working[10]} - fi - fi - #echo fp: $full_path - #echo id: $if_id - # echo "$if_data ii: $if_item $array_counter i: $i" - A_NETWORK_DATA[$array_counter]=${a_network_adv_working[0]}","${a_network_adv_working[1]}","${a_network_adv_working[2]}","${a_network_adv_working[3]}","${a_network_adv_working[4]}","$if_id","$oper_state","$speed","$duplex","$mac_id","$chip_id - - ((array_counter++)) - done + A_NETWORK_DATA[i]=${a_network_adv_working[0]}","${a_network_adv_working[1]}","${a_network_adv_working[2]}","${a_network_adv_working[3]}","${a_network_adv_working[4]}","$if_id","$oper_state","$speed","$duplex","$mac_id","$chip_id + IFS="$ORIGINAL_IFS" done - a_temp=${A_NETWORK_DATA[@]} - log_function_data "A_NETWORK_DATA (advanced): $a_temp" eval $LOGFE } @@ -6657,7 +6597,7 @@ get_networking_wan_ip_data() # awk has bad regex handling so checking it with grep -E instead # ip=$( echo 2001:0db8:85a3:0000:0000:8a2e:0370:7334 | gawk --re-interval ' # ip=$( wget -q -O - $WAN_IP_URL | gawk --re-interval ' - ip=$( wget -t 4 -T $WGET_TIMEOUT -q -O - $WAN_IP_URL | gawk --re-interval ' + ip=$( wget -t 1 -T $WGET_TIMEOUT -q -O - $WAN_IP_URL | gawk --re-interval ' { #gsub("\n","",$2") print $NF @@ -10380,7 +10320,7 @@ print_info_data() if [[ $shell_parent == 'login' ]];then shell_parent='' elif [[ -n $shell_parent ]];then - shell_parent=" running in ${shell_parent##*/}" + shell_parent=" running in $shell_parent" fi fi IRC_CLIENT="$IRC_CLIENT ($shell_data$shell_parent)" diff --git a/inxi.1 b/inxi.1 deleted file mode 100755 index 1789874..0000000 --- a/inxi.1 +++ /dev/null @@ -1,568 +0,0 @@ -.TH INXI 1 "2014\-05\-01" inxi "inxi manual" -.SH NAME -inxi \- Command line system information script for console and IRC -.SH SYNOPSIS -.B inxi \fR \- Single line, short form. Very basic output. - -.B inxi \fR[\fB\-AbCdDfFGhHiIlMnNopPrRsSuw\fR] \fR[\fB\-c NUMBER\fR] \fR[\fB\-v NUMBER\fR] - -.B inxi \fR[\fB\-t \fR(\fBc\fR or\fB m\fR or\fB cm\fR or\fB mc NUMBER\fR)] \fR[\fB\-x \-OPTION\fR(\fBs\fR)] \fR[\fB\-xx \-OPTION\fR(\fBs\fR)] \fR[\fB\-xxx \-OPTION\fR(\fBs\fR)] - -.B inxi \fR[\fB\-\-help\fR] \fR[\fB\-\-recommends\fR] \fR[\fB\-\-version\fR] \fR[\fB\-@ NUMBER\fR] -.SH DESCRIPTION -.B inxi\fR is a command line system information script built for for console and IRC. It is also used for forum technical support, as a debugging tool, to quickly ascertain user system configuration and hardware. inxi shows system -hardware, CPU, drivers, Xorg, Desktop, Kernel, GCC version(s), Processes, RAM usage, and a wide variety of other -useful information. -.B inxi\fR output varies between CLI and IRC, with some default filters and color options applied to IRC use. Script colors can -be turned off if desired with \fB\-c 0\fR, or changed using the \fB\-c\fR color options listed in the OPTIONS section below. -.SH PRIVACY AND SECURITY -In order to maintain basic privacy and security, inxi filters out automatically on IRC things like -your network card mac address, WAN and LAN IP, your \fB/home\fR username directory in partitions, -and a few other things. - -Because inxi is often used on forums for support, you can also trigger this filtering with the \fB\-z\fR -option (\fB\-Fz\fR, for example). To override the IRC filter, you can use the \fB\-Z\fR option. This can be useful -to debug network connection issues online in a private chat, for example. -.SH USING OPTIONS -Options can be combined if they do not conflict. Either group the letters -together or separate them. - -Letters with numbers can have no gap or a gap at your discretion unless using \fB \-t\fR. - -For example: - -.B inxi \-AG\fR or \fBinxi \-A \-G\fR or \fBinxi \-c10 -.SH STANDARD OPTIONS -.TP -.B \-A -Show Audio/sound card information. -.TP -.B \-b -Shows basic output, short form (previously \fB\-d\fR). Same as: \fBinxi \-v 2 -.TP -.B \-c \fR[\fB0\fR\-\fB32\fR] -Available color schemes. Scheme number is required. - -Supported color schemes: \fB0\-32 -.TP -.B \-c \fR[\fB94\fR\-\fB99\fR] -Color selectors run a color selector option prior to inxi starting which lets -you set the config file value for the selection. - -Color selectors for each type display (NOTE: irc and global only show safe color set): -.TP -.B \-c 94\fR -\- Console, out of X. -.TP -.B \-c 95\fR -\- Terminal, running in X \- like xTerm. -.TP -.B \-c 96\fR -\- Gui IRC, running in X \- like Xchat, Quassel, -Konversation etc. -.TP -.B \-c 97\fR -\- Console IRC running in X \- like irssi in xTerm. -.TP -.B \-c 98\fR -\- Console IRC not in X. -.TP -.B \-c 99\fR -\- Global \- Overrides/removes all settings. - -Setting specific color type removes the global color selection. -.TP -.B \-C -Show full CPU output, including per CPU clockspeed if available. See \fB\-x\fR for more options. -.TP -.B \-d -Shows optical drive data. Same as \fB\-Dd\fR. With \fB\-x\fR, adds features line to output. -\fB\-xx\fR adds a few more features. -.TP -.B \-D -Show full hard Disk info, not only model, ie: \fB/dev/sda ST380817AS 80.0GB\fR. Shows disk space -total + used percentage. The disk used percentage includes space used by swap partition(s), since -those are not usable for data storage. Note that with RAID disks, the percentage will be wrong -since the total is computed from the disk sizes, but the used is computed from mounted partition used -percentages. This small defect may get corrected in the future. Also, unmounted partitions are not -counted in disk use percentages since inxi has no access to that data. -.TP -.B \-f -Show all cpu flags used, not just the short list. Not shown with \fB\-F\fR to avoid -spamming. ARM cpus: show \fBfeatures\fR items. -.TP -.B \-F -Show Full output for inxi. Includes all Upper Case line letters, plus \fB\-s\fR and \fB\-n\fR. -Does not show extra verbose options like \fB\-x \-d \-f \-u \-l \-o \-p \-t \-r\fR unless you use -that argument. -.TP -.B \-G -Show Graphic card information. Card(s), Display Server (vendor and version number), for example: -\fBDisplay Server: Xorg 1.15.1 \fR -,screen resolution(s), glx renderer, version). At some point Wayland and other display servers -may be added once enough data has been collected. -.TP -.B \-h -The help menu. Features dynamic sizing to fit into terminal window. Set script global \fBCOLS_MAX_CONSOLE\fR -if you want a different default value, or use \fB-y \fR to temporarily override the defaults or actual window width. -.TP -.B \-\-help -Same as \fB\-h\fR -.TP -.B \-H -The help menu, plus developer options. Do not use dev options in normal -operation! -.TP -.B \-i -Show Wan IP address, and shows local interfaces (requires ifconfig network tool). -Same as \-Nni. Not shown with \fB\-F\fR for user security reasons, you shouldn't -paste your local/wan IP. -.TP -.B \-I -Show Information: processes, uptime, memory, irc client (or shell type if run in shell, not irc), inxi version. -See \fB\-x\fR and \fB\-xx\fR for extra information (init type/version, runlevel). -.TP -.B \-l -Show partition labels. Default: short partition \fB\-P\fR. For full \fB\-p\fR output, use: \fB\-pl\fR (or \fB\-plu\fR). -.TP -.B \-M -Show machine data. Motherboard, Bios, and if present, System Builder (Like Lenovo). -Older systems/kernels without the required \fB/sys\fR data can use dmidecode instead, run as root. If using dmidecode, -may also show bios revision as well as version. \fB\-! 33\fR can force use of \fBdmidecode\fR data instead of \fB/sys\fR. -.TP -.B \-n -Show Advanced Network card information. Same as \fB\-Nn\fR. Shows interface, speed, -mac id, state, etc. -.TP -.B \-N -Show Network card information. With \fB\-x\fR, shows PCI BusID, Port number. -.TP -.B \-o -Show unmounted partition information (includes UUID and LABEL if available). -Shows file system type if you have \fBfile\fR installed, if you are root OR if you have -added to \fB/etc/sudoers\fR (sudo v. 1.7 or newer): - -.B ALL = NOPASSWD: /usr/bin/file (sample) - -Does not show components (partitions that create the md raid array) of md\-raid arrays. -.TP -.B \-p -Show full partition information (\fB\-P\fR plus all other detected partitions). -.TP -.B \-P -Show Partition information (shows what \fB\-v 4\fR would show, but without extra data). -Shows, if detected: \fB/ /boot /home /tmp /usr /var\fR. Use \fB\-p\fR to see all mounted partitions. -.TP -.B \-r -Show distro repository data. Currently supported repo types: - -\fBAPT\fR (Debian, Ubuntu + derived versions) - -\fBPACMAN\fR (Arch Linux + derived versions) - -\fBPISI\fR (Pardus + derived versions) - -\fBURPMQ\fR (Mandriva, Mageia + derived versions) - -\fBYUM\fR (Fedora, Redhat, maybe Suse + derived versions) - -(as distro data is collected more will be added. If your's is missing please show us how to get this -information and we'll try to add it.) -.TP -.B \-R -Show RAID data. Shows RAID devices, states, levels, and components, and extra data with \fB\-x\fR / \fB\-xx\fR. -md\-raid: If device is resyncing, shows resync progress line as well. -.TP -.B \-\-recommends -Checks inxi application dependencies + recommends, and directories, then shows -what package(s) you need to install to add support for that feature. -.TP -.B \-s -Show sensors output (if sensors installed/configured): mobo/cpu/gpu temp; detected -fan speeds. Gpu temp only for Fglrx/Nvidia drivers. Nvidia shows screen number for > 1 screens. -.TP -.B \-S -Show System information: host name, kernel, desktop environment (if in X), distro. With \fB\-xx\fR show -dm \- or startx \- (only shows if present and running if out of X), and if in X, with \fB\-xxx\fR show more desktop info, like shell/panel etc. -.TP -.B \-t \fR[\fBc\fR or\fB m\fR or\fB cm\fR or\fB mc NUMBER\fR]\fR -Show processes. If followed by numbers \fB1\-20\fR, shows that number of processes for each type -(default: \fB5\fR; if in irc, max: \fB5\fR) - -Make sure to have no space between letters and numbers (\fB\-t cm10\fR \- right, \fB\-t cm 10\fR \- wrong). -.TP -.B \-t c\fR -\- cpu only. With \fB\-x\fR, shows also memory for that process on same line. -.TP -.B \-t m\fR -\- memory only. With \fB\-x\fR, shows also cpu for that process on same line. -.TP -.B \-t cm\fR -\- cpu+memory. With \fB\-x\fR, shows also cpu or memory for that process on same line. -.TP -.B \-u -Show partition UUIDs. Default: short partition \fB\-P\fR. For full \fB\-p\fR output, use: \fB\-pu\fR (or \fB\-plu\fR). -.TP -.B \-U -Note \- Maintainer may have disabled this function. - -If inxi \fB\-h\fR has no listing for \fB\-U\fR then its disabled. - -Auto\-update script. Note: if you installed as root, you must be root to update, -otherwise user is fine. Also installs / updates this Man Page to: \fB/usr/share/man/man8\fR -This requires that you be root to write to that directory. -.TP -.B \-V -inxi version information. Prints information then exits. -.TP -.B \-\-version -same as \fB\-V\fR -.TP -.B \-v -Script verbosity levels. Verbosity level number is required. Should not be used with \fB\-b\fR or \fB\-F\fR. - -Supported levels: \fB0\-7\fR Examples :\fB inxi \-v 4 \fR or \fB inxi \-v4\fR -.TP -.B \-v 0 -\- Short output, same as: \fBinxi\fR -.TP -.B \-v 1 -\- Basic verbose, \fB\-S\fR + basic CPU + \fB\-G\fR + basic Disk + \fB\-I\fR. -.TP -.B \-v 2 -\- Adds networking card (\fB\-N\fR), Machine (\fB\-M\fR) data, and shows basic hard disk data -(names only). Same as: \fBinxi \-b -.TP -.B \-v 3 -\- Adds advanced CPU (\fB\-C\fR); network (\fB\-n\fR) data; triggers \fB\-x\fR advanced data option. -.TP -.B \-v 4 -\- Adds partition size/filled data (\fB\-P\fR) for (if present):\fB/ /home /var/ /boot\fR -Shows full disk data (\fB\-D\fR) -.TP -.B \-v 5 -\- Adds audio card (\fB\-A\fR); sensors (\fB\-s\fR), partition label (\fB\-l\fR) and UUID (\fB\-u\fR), short form of -optical drives. -.TP -.B \-v 6 -\- Adds full partition data (\fB\-p\fR), unmounted partition data (\fB\-o\fR), optical drive data (\fB\-d\fR); -triggers \fB\-xx\fR extra data option. -.TP -.B \-v 7 -\- Adds network IP data (\fB\-i\fR); triggers \fB\-xxx\fR -.TP -.B \-w -Adds weather line. Note, this depends on an unreliable api so it may not always be working in the future. -To get weather for an alternate location, use \fB\-W \fR. See also \fB\-x\fR, \fB\-xx\fR, \fB\-xxx\fR option. -Please note, your distribution's maintainer may chose to disable this feature, so if \fB\-w\fR or \fB\-W\fR don't work, that's why. -.TP -.B \-W -Get weather/time for an alternate location. Accepts postal/zip code, city,state pair, or latitude,longitude. -Note: city/country/state names must not contain spaces. Replace spaces with '\fB+\fR' sign. No spaces around \fB,\fR (comma). -Use only ascii letters in city/state/country names, sorry. - -Examples: \fB\-W 95623\fR OR \fB\-W Boston,MA\fR OR \fB\-W45.5234,\-122.6762\fR OR \fB\-W new+york,ny\fR -OR \fB\-W bodo,norway\fR. -.TP -.B \-y = 80> -This is an absolute width override which sets the output line width max. Overrides \fBCOLS_MAX_IRC\fR / \fBCOLS_MAX_CONSOLE\fR globals, or the actual widths of the terminal. If used with \fB\-h\fR or \fB\-c 94-99\fR, put \fB\-y\fR option first or the override will be ignored. Cannot be used with \fB\-\-help\fR/\fB\-\-version\fR/\fB\-\-recommends\fR type long options. Example: \fBinxi \-y 130 \-Fxx\fR -.TP -.B \-z -Adds security filters for IP addresses, Mac, location (\fB\-w\fR), and user home directory name. Default on for irc clients. -.TP -.B \-Z -Absolute override for output filters. Useful for debugging networking issues in irc for example. -.SH EXTRA DATA OPTIONS -These options are for long form only, and can be triggered by one or more \fB\-x\fR, like \fB\-xx\fR. -Alternately, the \fB\-v\fR options trigger them in the following way: -\fB\-v 3\fR adds \fB\-x\fR; \fB\-v 6\fR adds \fB\-xx\fR; \fB\-v 7\fR adds \fB\-xxx\fR - -These extra data triggers can be useful for getting more in\-depth data on various options. -Can be added to any long form option list, like: \fB\-bxx\fR or \fB\-Sxxx\fR - -There are 3 extra data levels: \fB\-x\fR; \fB\-xx\fR; and \fB\-xxx\fR - -The following shows which lines / items get extra information with each extra data level. -.TP -.B \-x \-A -\- Adds version/port(s)/driver version (if available) for each Audio device. -.TP -.B \-x \-A -\- Shows PCI Bus ID/Usb ID number of each Audio device. -.TP -.B \-x \-C -\- bogomips on CPU (if available); CPU Flags (short list). -.TP -.B \-x \-d -\- Adds items to features line of optical drive; adds rev version to optical drive. -.TP -.B \-x \-D -\- Hdd temp with disk data if you have hddtemp installed, if you are root OR if you have added to -\fB/etc/sudoers\fR (sudo v. 1.7 or newer): - -.B ALL = NOPASSWD: /usr/sbin/hddtemp (sample) -.TP -.B \-x \-G -\- Direct rendering status for Graphics (in X). -.TP -.B \-x \-G -\- (for single gpu, nvidia driver) screen number gpu is running on. -.TP -.B \-x \-G -\- Shows PCI Bus ID/Usb ID number of each Graphics card. -.TP -.B \-x \-i -\- Show IPv6 as well for LAN interface (IF) devices. -.TP -.B \-x \-I -\- Show current init system (and init rc in some cases, like OpenRC). With \-xx, shows init/rc -version number, if available. -.B \-x \-I -\- Show system GCC, default. With \-xx, also show other installed GCC versions. -.TP -.B \-x \-I -\- Show current runlevel (not available with all init systems). -.TP -.B \-x \-I -\- If in shell (not in IRC client, that is), show shell version number (if available). -.TP -.B \-x \-N -\- Adds version/port(s)/driver version (if available) for each Network card; -.TP -.B \-x \-N -\- Shows PCI Bus ID/Usb ID number of each Network card. -.TP -.B \-x \-R -\- md\-raid: Shows component raid id. Adds second RAID Info line: raid level; report on drives -(like 5/5); blocks; chunk size; bitmap (if present). Resync line, shows blocks synced/total blocks. - -\- zfs\-raid: Shows raid array full size; available size; portion allocated to RAID (ie, not available as storage)." -.TP -.B \-x \-S -\- Desktop toolkit if available (GNOME/XFCE/KDE only); Kernel gcc version. -.TP -.B \-x \-t -\- Adds memory use output to cpu (\fB\-xt c\fR), and cpu use to memory (\fB\-xt m\fR). -.TP -.B \-x \-w / \-W -\- Adds wind speed and time zone (\-w only), and makes output go to two lines. -.TP -.B \-xx \-A -\- Adds vendor:product ID of each Audio device. -.TP -.B \-xx \-D -\- Adds disk serial number. -.TP -.B \-xx \-G -\- Adds vendor:product ID of each Graphics card. -.TP -.B \-xx \-I -\- Show init type version number (and rc if present). -.TP -.B \-xx \-I -\- Adds other detected installed gcc versions to primary gcc output (if present). -.TP -.B \-xx \-I -\- Show, if detected, system default runlevel. Supports Systemd/Upstart/Sysvinit type defaults. Note that -not all systemd systems have the default value set, in that case, if present, it will use the data from -\fB/etc/inittab\fR. -.TP -.B \-xx \-I -\- Adds parent program (or tty) that started shell, if not IRC client, to shell information. -.TP -.B \-xx \-M -\- Adds chassis information, if any data for that is available. Also shows BIOS rom size if using dmidecode. -.TP -.B \-xx \-N -\- Adds vendor:product ID of each Network card. -.TP -.B \-xx \-R -\- md\-raid: Adds superblock (if present); algorythm, U data. Adds system info line (kernel support, -read ahead, raid events). Adds if present, unused device line. If device is resyncing, shows -resync progress line as well. -.TP -.B \-xx \-S -\- Adds, if run in X, display manager type to Desktop information, if present. If none, shows N/A. -Supports most known display managers, like xdm, gdm, kdm, slim, lightdm, or mdm. -.TP -.B \-xx \-w / \-W -\- Adds humidity and barometric pressure. -.TP -.B \-xx \-@ <11\-14> -\- Automatically uploads debugger data tar.gz file to \fIftp.techpatterns.com\fR. -.TP -.B \-xxx \-S -\- Adds, if run in X, shell/panel type info to Desktop information, if present. If none, shows nothing. -Supports some current desktop extras like gnome\-panel, lxde\-panel, and others. Added mainly for Mint support. -.TP -.B \-xxx \-w / \-W -\- Adds location (city state country), weather observation time, altitude of system. -If wind chill, heat index, or dew point are available, shows that data as well. -.SH ADVANCED OPTIONS -.TP -.B \-! 31 -Turns off hostname in System line. Useful, with \fB\-z\fR, for anonymizing your inxi output for posting on -forums or IRC. -.TP -.B \-! 32 -Turns on hostname in System line. Overrides inxi config file value (if set): B_SHOW_HOST='false'. -.TP -.B \-! 33 -Force use of \fBdmidecode\fR. This will override \fB/sys\fR data in some lines, like \fB\-M\fR. -.SH DEBUGGING OPTIONS -.TP -.B \-% -Overrides defective or corrupted data. -.TP -.B \-@ -Triggers debugger output. Requires debugging level \fB1\-14\fR (\fB8\-10\fR \- logging of data). -Less than 8 just triggers inxi debugger output on screen. -.TP -.B \-@ \fR[\fB1\fR\-\fB7\fR] -\- On screen debugger output. -.TP -.B \-@ 8 -\- Basic logging. Check \fB/home/yourname/.inxi/inxi*.log -.TP -.B \-@ 9 -\- Full file/sys info logging. -.TP -.B \-@ 10 -\- Color logging. -.TP -.B \-@ <11\-14> -The following create a tar.gz file of system data, plus collecting the inxi output to file: -To automatically upload debugger data tar.gz file to \fIftp.techpatterns.com\fR: - -\fBinxi \-xx@ <11\-14>\fR - -For alternate ftp upload locations: Example: - -.B inxi \-! \fIftp.yourserver.com/incoming\fB \-xx@ 14\fR -.TP -.B \-@ 11 -\- With data file of xiin read of \fB/sys -.TP -.B \-@ 12 -\- With xorg conf and log data, xrandr, xprop, xdpyinfo, glxinfo etc. -.TP -.B \-@ 13 -\- With data from dev, disks, partitions, etc., plus xiin data file. -.TP -.B \-@ 14 -\- Everything, full data collection. -.SH SUPPORTED IRC CLIENTS -BitchX, Gaim/Pidgin, ircII, Irssi, Konversation, Kopete, KSirc, KVIrc, Weechat, and Xchat. Plus any others that -are capable of displaying either built in or external script output. -.SH RUNNING IN IRC CLIENT -To trigger inxi output in your IRC client, pick the appropriate method from the list below: -.TP -.B Xchat, irssi \fR(and many other IRC clients) -.B /exec \-o inxi \fR[\fBoptions\fR] -If you leave off the \fB\-o\fR, only you will see the output on your local IRC client. -.TP -.B Konversation -.B /cmd inxi \fR[\fBoptions\fR] -To run inxi in konversation as a native script if your distribution or inxi package did not do this for you, -create this symbolic link: - -.B ln \-s /usr/local/bin/inxi /usr/share/kde4/apps/konversation/scripts/inxi - -If inxi is somewhere else, change the path \fB/usr/local/bin\fR to wherever it is located. - -Then you can start inxi directly, like this: - -.B /inxi \fR[\fBoptions\fR] -.TP -.B WeeChat -.B NEW: /exec \-o inxi \fR[\fBoptions\fR] - -.B OLD: /shell \-o inxi \fR[\fBoptions\fR] - -Newer (2014 and later) WeeChats work pretty much the same now as other console IRC -clients, with \fB/exec \-o inxi \fR[\fBoptions\fR]. Also, newer WeeChats have dropped -the \fB\-curses\fR part of their program name, ie: \fBweechat\fR instead of \fBweechat-curses\fR. - -Deprecated: - -Before WeeChat can run external scripts like inxi, you need to install the -weechat\-plugins package. This is automatically installed for Debian users. -Next, if you don't already have it, you need to install shell.py, -which is a python script. - -In a web browser, Click on the download button at: -.I http://www.weechat.org/scripts/source/stable/shell.py.html/ - -Make the script executable by - -.B chmod +x shell.py - -Move it to your home folder: \fB/.weechat/python/autoload/\fR then logout, and start WeeChat with - -.B weechat\-curses - -Top of screen should say what pythons scripts have loaded, and should include shell. Then to run inxi, -you would enter a command like this: - -.B /shell \-o inxi \-bx - -If you leave off the \fB\-o\fR, only you will see the output on your local weechat. WeeChat -users may also like to check out the weeget.py -.SH INITIALIZATION FILE -.TP -inxi will read the following configuration/initialization files in the following order: -.TP -.B /etc/inxi.conf -.TP -.B $HOME/.inxi/inxi.conf -.TP -See wiki pages for more information on how to set these up: -.TP -.I http://code.google.com/p/inxi/wiki/script_configuration_files -.SH BUGS -Please report bugs using the following resources. - -You may be asked to run the inxi debugger tool which will upload a data dump of all -system files for use in debugging inxi. These data dumps are very important since -they provide us with all the real system data inxi uses to parse out its report. -.TP -inxi main website/svn/wiki, file an issue report: -.I http://code.google.com/p/inxi/issues/list -.TP -post on inxi developer forums: -.I http://techpatterns.com/forums/forum\-32.html -.TP -You can also visit -.I irc.oftc.net \fRchannel:\fI #smxi -to post issues. -.SH HOMEPAGE -.I http://code.google.com/p/inxi -.SH AUTHOR AND CONTRIBUTORS TO CODE -.B inxi -is is a fork of locsmif's largely unmaintained yet very clever, infobash script. - -Original infobash author and copyright holder: -Copyright (C) 2005\-2007 Michiel de Boer a.k.a. locsmif - -inxi version: Copyright (C) 2008\-13 Scott Rogers & Harald Hope - -Further fixes (listed as known): Horst Tritremmel - -Steven Barrett (aka: damentz) \- usb audio patch; swap percent used patch. -Jarett.Stevens \- dmidecode \-M patch for older systems with no /sys - -And a special thanks to the nice people at irc.oftc.net channels #linux\-smokers\-club and #smxi, -who all really have to be considered to be co\-developers because of their non\-stop enthusiasm -and willingness to provide real time testing and debugging of inxi development. - -Without a wide range of diverse Linux kernel based Free Desktop systems to test on, we could -never have gotten inxi to be as reliable and solid as it's turning out to be. - -And of course, big thanks locsmif, who figured out a lot of the core methods, logic, -and tricks used in inxi. - -Further thanks to the various inxi package maintainers, distro support people, forum -moderators, and others, who contribute ideas, suggestions, and patches. - -This Man page was originally created by Gordon Spencer (aka aus9) and is maintained by -Harald Hope (aka h2 or TechAdmin). diff --git a/inxi.changelog b/inxi.changelog deleted file mode 100755 index 48a88aa..0000000 --- a/inxi.changelog +++ /dev/null @@ -1,1728 +0,0 @@ -===================================================================================== -Version: 2.1.29 -Patch Version: 00 -Script Date: 2014-08-08 ------------------------------------ -Changes: ------------------------------------ -New version, tarball. Big update/fix to -n/-i/-N. Now supports infiniband devices, which -have the odd feature in our test data of having > 1 IF id, like ib0 ib1 per pcibusid. - -Added support for virtual nics as well. This required refactoring the networking functions -significantly, so hopefully nothing breaks for existing systems. It should in theory be more -robust now than it was before, with more accurate output, particularly with multiple port -devices, like two port nics etc. - ------------------------------------ --- Harald Hope - Fri, 08 Aug 2014 10:17:52 -0700 - -===================================================================================== -Version: 2.1.28 -Patch Version: 00 -Script Date: 2014-05-05 ------------------------------------ -Changes: ------------------------------------ -new version, new tarball. Adding tentative desktop id for LXQt, but I don't think -that this method will be super long lived, I expect LXDE to change how it shows itself -to the system when the gtk variant goes away. Good for lxde by the way in dumping gtk. - ------------------------------------ --- Harald Hope - Mon, 05 May 2014 12:11:27 -0700 - -===================================================================================== -Version: 2.1.27 -Patch Version: 00 -Script Date: 2014-05-02 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Should be almost no changes for linux platforms, though I -added in an abstracted kernel_compiler method, not just gcc, that may work on freebsd, -and in the future, it may also work if distros or kernel people start using either -clang or LLVM-GCC or LLVM for compiling linux kernels. I'd need some data sets to -show that however before adding that full linux kernel support, but the framework -is now there. - -That continues the abstraction of certain features, like kernel compiler, init system, -display server. Display server still needs full data sets from mir/wayland, at least -wayland, and the bsd display servers as well, I have no idea how to get that data -at this point, but the starting framework is present anyway for that time I get -those datasets. - -Almost all these changes are for darwin osx, and that is about all I will do for that -junky broken platform, they have no tools, they have no discipline when it comes to -following unix like conventions, they even use spaces in program names, like windows. - -Given it has no native lspci or pciconf tool that I am aware of, or dmesg.boot, -there's little point in putting more time into it. dmidecode does not run on darwin, -so there's nothing to learn there either, you can get a silly 3rd party program to -generate a dmidecode.bin data file that dmidecode can then read, but since that -requires not one, but two third party programs be installed, that's not going to -happen. - -Next time an osx user calls this system 'unix' I will laugh. - ------------------------------------ --- Harald Hope - Fri, 02 May 2014 12:44:38 -0700 - -===================================================================================== -Version: 2.1.26 -Patch Version: 00 -Script Date: 2014-05-01 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Maintainer: this is only for bsd darwin (aka osx, it's an -experiment, just to get it running, so you can all ignore this release. - -Added in darwin cpu, init, distro version support, and updated inxi to support -darwin/osx without exiting. - -No linux changes. - ------------------------------------ --- Harald Hope - Thu, 01 May 2014 13:32:21 -0700 - -===================================================================================== -Version: 2.1.25 -Patch Version: 00 -Script Date: 2014-04-28 ------------------------------------ -Changes: ------------------------------------ -no version change, new tarball. On consideration, I'm not using temp3, that is simply -not reliable enough and leads I think to more false readings than right ones. - ------------------------------------ --- Harald Hope - Mon, 28 Apr 2014 14:47:41 -0700 - -===================================================================================== -Version: 2.1.25 -Patch Version: 00 -Script Date: 2014-04-28 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. This fixes a possible bug with using --total to calculate disk -used percentage, there are too many possible remote file systems to safely exclude, so -sticking with using the test that partition is /dev mounted. - -Howeve, did add excludes of nfs/smbfs types, as well as future bsd excludes of those. - ------------------------------------ --- Harald Hope - Mon, 28 Apr 2014 14:23:39 -0700 - -===================================================================================== -Version: 2.1.24 -Patch Version: 00 -Script Date: 2014-04-28 ------------------------------------ -Changes: ------------------------------------ -Quick fix, new tarball, no new version. This fixes a -D size used error, if nfs, nfs4, smbfs -are mounted, inxi included those in the disk space used, creating insane used errors. - ------------------------------------ --- Harald Hope - Mon, 28 Apr 2014 14:12:50 -0700 - -===================================================================================== -Version: 2.1.24 -Patch Version: 00 -Script Date: 2014-04-28 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. This is an attempt to make -s accurate more of the time, -particularly with fringe or broken sensors outputs. See inxi issue 58 for details. -http://code.google.com/p/inxi/issues/detail?id=58 - -Added temp3, and an override to capture cases where temp3 is the actual cpu temp. - -Added PECI overrides for cases like msi/asus mobos have defective CPUTIN return data. - -Added core0 overrides as well, for cases where the temp returned is too low. - -It is absolutely 100% guaranteed that these changes will break some outputs that were -working, but it's also certain that I believe that more wrong outputs will be corrected. - -With sensors, really the only way you can get reliable sensors is to use the lm-sensors -config files for your motherboard, then set: CPU: temp and MB: temp explicitly. - -inxi will always use CPU: or MB: to override anything found. - ------------------------------------ --- Harald Hope - Mon, 28 Apr 2014 13:17:53 -0700 - -===================================================================================== -Version: 2.1.23 -Patch Version: 00 -Script Date: 2014-04-27 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball, new man. Found a pesky bug with false disk used results. - -It turns out I'd neglected to include /dev/disk partitions, oops, in the df data. - -Since this is a long time bug, it warrants a new release even though I just did -2.1.22. - ------------------------------------ --- Harald Hope - Sun, 27 Apr 2014 15:55:20 -0700 - -===================================================================================== -Version: 2.1.22 -Patch Version: 00 -Script Date: 2014-04-27 ------------------------------------ -Changes: ------------------------------------ -Quick update to -D, now inxi uses the total partition swap space to calculate the -disk used percentage as well. Since swap space is not available as disk space, it -makes sense to me to count it as used. -P/-p show the percent of swap used as well. - ------------------------------------ --- Harald Hope - Sun, 27 Apr 2014 14:41:06 -0700 - -===================================================================================== -Version: 2.1.22 -Patch Version: 00 -Script Date: 2014-04-27 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. A bug fix for btrfs, which does not internally use /dev/sdx[number] -to identify a partition, but rather the basic /dev/sdc for example. - -This made -D show wrong disk used percentage. - -Also, I added --total for df that have that supported, there is however an oddity which you -can see here: - -df --total -P -T --exclude-type=aufs --exclude-type=devfs --exclude-type=devtmpfs \ ---exclude-type=fdescfs --exclude-type=iso9660 --exclude-type=linprocfs --exclude-type=procfs \ ---exclude-type=squashfs --exclude-type=sysfs --exclude-type=tmpfs --exclude-type=unionfs | \ -awk 'BEGIN {total=0} !/total/ {total = total + $4 }END {print total}' -result: -614562236 - -df --total -P -T --exclude-type=aufs --exclude-type=devfs --exclude-type=devtmpfs \ ---exclude-type=fdescfs --exclude-type=iso9660 --exclude-type=linprocfs --exclude-type=procfs \ ---exclude-type=squashfs --exclude-type=sysfs --exclude-type=tmpfs --exclude-type=unionfs | \ -awk 'BEGIN {total=0} /^total/ {total = total + $4 }END {print total}' - -result: -614562228 - - df -P -T --exclude-type=aufs --exclude-type=devfs --exclude-type=devtmpfs \ - --exclude-type=fdescfs --exclude-type=iso9660 --exclude-type=linprocfs --exclude-type=procfs \ - --exclude-type=squashfs --exclude-type=sysfs --exclude-type=tmpfs --exclude-type=unionfs | \ - awk 'BEGIN {total=0} {total = total + $4 }END {print total}' - - result: - 614562236 - - In my tests, using --total gives a greater disk user percentage than adding the results - up manually, as inxi did before, and still does for systems without --total for df. - - df --total -P -T --exclude-type=aufs --exclude-type=devfs --exclude-type=devtmpfs \ - --exclude-type=fdescfs --exclude-type=iso9660 --exclude-type=linprocfs \ - --exclude-type=procfs --exclude-type=squashfs --exclude-type=sysfs --exclude-type=tmpfs \ - --exclude-type=unionfs - -Filesystem Type 1024-blocks Used Available Capacity Mounted on -/dev/disk/by-label/root-data ext3 12479556 12015624 335816 98% / -/dev/sdc9 ext3 20410156 18013360 1979432 91% /home -/dev/sdc7 ext3 4904448 3785460 1016672 79% /media/sdb2 -/dev/sdc5 ext3 30382896 27467220 2295720 93% /var/www/m -/dev/sdc8 ext3 61294356 41849300 18196972 70% /home/me/1 -/dev/sdb1 ext3 307532728 285159432 20810456 94% /home/me/2 -/dev/sdd1 ext3 26789720 18153076 7542620 71% /home/me/3 -/dev/sdd2 ext3 213310776 206932912 2040960 100% /home/me/4 -/dev/sda7 ext3 10138204 1185772 8434348 13% /home/me/5 -total - 687242840 614562156 62652996 91% - - -Strange, no? the data is in blocks, and it should of course in theory add up to exactly the -same thing. However, because --total lets df do the math, I'm going to use that for now, -unless someone can show it's not good. - -inxi still falls back for bsds and older df to the standard method. ------------------------------------ --- Harald Hope - Sun, 27 Apr 2014 12:49:06 -0700 - -===================================================================================== -Version: 2.1.21 -Patch Version: 00 -Script Date: 2014-04-24 ------------------------------------ -Changes: ------------------------------------ -New tarball, small update, added hopefully firewire support to drive type id. - -That's searching for ieee1394- hopefully that will do it. - ------------------------------------ --- Harald Hope - Thu, 24 Apr 2014 13:22:51 -0700 - -===================================================================================== -Version: 2.1.21 -Patch Version: 00 -Script Date: 2014-04-24 ------------------------------------ -Changes: ------------------------------------ -New version, tarball. This fixes one small oversight, placing USB in front of ID-[x] -of disk drive lists. Was showing USB ID-1: /dev/sde now shows: ID-1: USB /dev/sde -that is more intuitive and keeps the columns in alignment more or less, easier -to read. - -Second, fixes a bug with some file systems / usb drives -where they do not use usb- in the /dev/disk/by-id line but only wwn- -https://access.redhat.com/site/documentation/en --US/Red_Hat_Enterprise_Linux/5/html/Online_Storage_Reconfiguration_Guide/persistent_naming.html -explains it somewhat. - -the fix is adding a second if null test of the device /dev/sdx in by-path, that seems -to fix the issue. by-path does have the usb- item, though it does not have the name -so it's not as reliable in absolute terms, but it's fine as a second step fallback -option. - ------------------------------------ --- Harald Hope - Thu, 24 Apr 2014 11:47:08 -0700 - -===================================================================================== -Version: 2.1.20 -Patch Version: 00 -Script Date: 2014-04-08 ------------------------------------ -Changes: ------------------------------------ -While this release has some new features, they are all intended for development use -for the next major feature, -m / memory, so there is no particular reason to package -this release. There is a new development option, -! 33, which lets me override /sys -data use for -M, which is useful to debug dmidecode output for -m and other features. - -No new version, new man. There may be a few more of these releases, but functionally -there is no particular reason to make a new package if you are a maintainer, so there -is no new version number. This release is a preparation for some branches/one/inxi -tests that will be run in the future. - -The man/help document -! 33 just to have it there, but it should make no difference -to anyone but me at this stage. - ------------------------------------ --- Harald Hope - Mon, 14 Apr 2014 13:31:24 -0700 - -===================================================================================== -Version: 2.1.20 -Patch Version: 00 -Script Date: 2014-04-08 ------------------------------------ -Changes: ------------------------------------ -A few fixes to 2.1.20, bmips broke in some cases, that's fixed now. Also changed the -way to handle bad ARM data, when bogomips are too low, < 50, we try to get the data -from /sys, but now this runs on all the cores, so it may work as well on the multicore -arm if the /proc/cpuinfo has bogomip that is too low and no cpu frequency. - ------------------------------------ --- Harald Hope - Wed, 09 Apr 2014 00:09:49 -0700 - -===================================================================================== -Version: 2.1.20 -Patch Version: 00 -Script Date: 2014-04-08 ------------------------------------ -Changes: ------------------------------------ -New version, tarball, ARM cpu /proc/cpuinfo has broken the bogomips output, since this -is an upstream bug, I'm adding in a quick hack that will work maybe for single core -ARM cpus, but NOT for multicores that have the same issue. - ------------------------------------ --- Harald Hope - Tue, 08 Apr 2014 17:15:41 -0700 - -===================================================================================== -Version: 2.1.19 -Patch Version: 00 -Script Date: 2014-04-06 ------------------------------------ -Changes: ------------------------------------ -New version, tarball, correction of loop counts for -p/-P ID-, this requires -a third counter to get all the stuff right. Sorry about the extra release, that's life. - ------------------------------------ --- Harald Hope - Sun, 06 Apr 2014 14:33:46 -0700 - -===================================================================================== -Version: 2.1.18 -Patch Version: 00 -Script Date: 2014-04-04 ------------------------------------ -Changes: ------------------------------------ -New version/tarball. This completes, I think, the line wrap update. -o is now handled, -unmounted drives. - -IMPORTANT: some distros use inxi for detecting partitions, the syntax on the following -have changed slightly: - -HDD: per drive changes from: 1: id: to ID-1: -Partitions: per partition changes from ID: to ID-1: -Unmounted partitions: per unmounted changes from ID: to ID-1 - -You see the pattern, they are all the same now, and they are all numbered. I think this -is easier to read when scanning long lines of drives/partitions, or even short ones. - -Also fixed a long standing oddity, not a bug, but for some weird reason, -p did not -include the location, like /dev/sda1, unless -l or -u were used. That makes no sense -so I have moved the dev/remote location output to standard -p/-P - -Except for bug fixes, this completes the overally line wrap update, all lines wrap, -you can set widths with -y now, and the old issue of not fitting nicely into 80 column -wide widths is solved. Note that in some areas, p/P for example, at times if the mount -point or remote location is very long the line may still wrap, but making this perfect -is too convoluted so I'm calling it good enough now, all lines are handled reasonably well, -certainly radically better than before 2.1.0. - ------------------------------------ --- Harald Hope - Fri, 04 Apr 2014 11:08:25 -0700 - -===================================================================================== -Version: 2.1.17 -Patch Version: 00 -Script Date: 2014-04-03 ------------------------------------ -Changes: ------------------------------------ -New version, new man page, new tarball. Added -y [integer >= 80] option. This allows for absolute override -of width settings. This overrides any dynamically detected widths, as well as the globals: -COLS_MAX_CONSOLE='115' -COLS_MAX_IRC='105' -Now that inxi widths are largely dynamic in terminal, with a few lingering exceptions, it made sense -to also allow for overrides of this. This is useful in cases where for example you want to output -inxi to text file or for other purposes, or if you just want to test the widths, as in my case. - --y cannot be used with --recommends, but otherwise it works fine, with --help/-c 94-99 you have to -put -y first in the list of options. - -Example: inxi -v7 -y150 > inxi.txt will ignore the terminal settings and output the lines at basically -max length. - ------------------------------------ --- Harald Hope - Thu, 03 Apr 2014 10:41:07 -0700 - -===================================================================================== -Version: 2.1.16 -Patch Version: 00 -Script Date: 2014-04-02 ------------------------------------ -Changes: ------------------------------------ -New version, tarball. This fix only impacts bsd sed, but it fixes the line length failure -issue because bsd sed doesn't work with \x1b, but it does when you do: -ESC=$(echo | tr '\n' '\033' ) -I found this trick on: -http://unix.stackexchange.com/questions/42321/how-can-i-instruct-bsd-sed-to-interpret-escape-sequences-like-n-and-t - -No other changes. Non bsd users, you can ignore this. - ------------------------------------ --- Harald Hope - Wed, 02 Apr 2014 21:24:52 -0700 - -===================================================================================== -Version: 2.1.15 -Patch Version: 00 -Script Date: 2014-04-01 ------------------------------------ -Changes: ------------------------------------ -new version/tarball. This corrects some subtle issues with line wraps: - -Audio -A - now wrap is fully dynamic down to 80 characters, and also the expansion of ALSA -to Advanced Linux Sound System only happens if that fits in the display width. - --N/-n/-i - Most networking/ip address stuff wraps now. - --d - optical drive data wraps better now too. - -This more or less completes the line wrap redo. - ------------------------------------ --- Harald Hope - Tue, 01 Apr 2014 12:39:44 -0700 - -===================================================================================== -Version: 2.1.14 -Patch Version: 00 -Script Date: 2014-03-31 ------------------------------------ -Changes: ------------------------------------ -Forgot, added slitaz-release to distros derived. that's as slackware derived one. - ------------------------------------ --- Harald Hope - Mon, 31 Mar 2014 18:10:02 -0700 - -===================================================================================== -Version: 2.1.14 -Patch Version: 00 -Script Date: 2014-03-31 ------------------------------------ -Changes: ------------------------------------ -new version/tarball. Tiny fix in debugger, it turns out that in some systems, the command: -strings --version used in the debugger results in a hang, which you can duplicate with: -strings -alone, without any argument or info, that will hang too, so I assume if the system doesn't -have the --version parameter, strings ignores that, and basically just does what it would do -with no option, hang. - -Thanks for user ypharis persistence in tracking down this issue. So far only appeared on slackware -based distros, but since the debugger should 'just work', removing the version test. - ------------------------------------ --- Harald Hope - Mon, 31 Mar 2014 17:49:48 -0700 - -===================================================================================== -Version: 2.1.13 -Patch Version: 00 -Script Date: 2014-03-30 ------------------------------------ -Changes: ------------------------------------ -New version, only relevant to Porteus distro, a slackware derived distro, should now id it -correctly. No other changes. - ------------------------------------ --- Harald Hope - Sun, 30 Mar 2014 11:54:12 -0700 - -===================================================================================== -Version: 2.1.12 -Patch Version: 00 -Script Date: 2014-03-27 ------------------------------------ -Changes: ------------------------------------ -new version, fixed zfs raid failure to report raid devices on some systems. Added wrapping -for -D disk option. Note that -d is not correctly wrapping because the lines are too long with -extra data, but it's ok for now. - ------------------------------------ --- Harald Hope - Thu, 27 Mar 2014 15:33:33 -0700 - -===================================================================================== -Version: 2.1.11 -Patch Version: 00 -Script Date: 2014-03-26 ------------------------------------ -Changes: ------------------------------------ -Ignore change 2.1.12, the speed data was too inconsistent, using >>> since it's cleaner -and seems to be faster on some cpus, slower on others. - ------------------------------------ --- Harald Hope - Wed, 26 Mar 2014 15:28:08 -0700 - -===================================================================================== -Version: 2.1.12 -Patch Version: 00 -Script Date: 2014-03-26 ------------------------------------ -Changes: ------------------------------------ -new version: this is only an optimization release, testing some slightly more efficient -methods: -something <<< $variable is signficantly slower than: echo $variable | something -so I replaced almost all instances of <<< with echo ...| - -I've seen speed differences of up to 10% but it's not consistent, so this is just -something to boost performance slightly on older systems I'd guess. - ------------------------------------ --- Harald Hope - Wed, 26 Mar 2014 14:54:39 -0700 - -===================================================================================== -Version: 2.1.11 -Patch Version: 00 -Script Date: 2014-03-26 ------------------------------------ -Changes: ------------------------------------ -New version: fixed an old bug, with -c 0, no colors, RED and NORMAL color codes were -not set to null, which results in some cases with red output, along with turning -terminal/console font color red. - ------------------------------------ --- Harald Hope - Wed, 26 Mar 2014 12:44:53 -0700 - -===================================================================================== -Version: 2.1.10 -Patch Version: 00 -Script Date: 2014-03-25 ------------------------------------ -Changes: ------------------------------------ -New version; added supybot/limnoria/gribble support. This only works when the supybot -'SHELL' command is used, 'CALL' gives the user irc client data, and supybot etc are -not detectable. - -Fine tuned some error message lengths so they fit into 80 columns or so. - ------------------------------------ --- Harald Hope - Tue, 25 Mar 2014 13:55:13 -0700 - -===================================================================================== -Version: 2.1.9 -Patch Version: 00 -Script Date: 2014-03-24 ------------------------------------ -Changes: ------------------------------------ -New version, fixed cpu core speed wrapping, improved -p and -P wrapping, though some lines -will still be too long, but not as many. - ------------------------------------ --- Harald Hope - Mon, 24 Mar 2014 18:42:06 -0700 - -===================================================================================== -Version: 2.1.8 -Patch Version: 00 -Script Date: 2014-03-24 ------------------------------------ -Changes: ------------------------------------ -New version. Added dynamic wrapping to -G, and also am now wrapping -C per cpu cores speeds, -for systems with a lot of them, that will clean up the output. - -Added dynamic wrapping to --recommends and -c 94-99. - -These are the main things, there's a few smaller issues with -xx output on -N/-n/-i but -those will noly really show with full output and it takes a while to get this stuff stable -so maybe some other time, but it's ok for now. - ------------------------------------ --- Harald Hope - Mon, 24 Mar 2014 16:58:33 -0700 - -===================================================================================== -Version: 2.1.7 -Patch Version: 00 -Script Date: 2014-03-18 ------------------------------------ -Changes: ------------------------------------ -new version, attempt 2 at detecting all possible syntaxes for cards. Now using -the bus id itself to determine if the -VGA compatible controller -3D controller -Display Controller -refer to separate chips or the same one. - -Bus id gives the data needed, because the video chip, the real card, that is, -is on for example 00:05.0 the trailing .0 is the key, that's the actual card. - -The audio or display controller for the same card would be for example: 00:05.1 - -I don't know if this is fully reliable, but it will have to do, either some cards -as is get missed, or some cards get double id'ed, unless I use a hack like this. - -There's nothing else I can find but the bus id to determine that it's the same -physical device or not. - ------------------------------------ --- Harald Hope - Tue, 18 Mar 2014 21:18:27 -0700 - -===================================================================================== -Version: 2.1.6 -Patch Version: 00 -Script Date: 2014-03-18 ------------------------------------ -Changes: ------------------------------------ -new version, bug fix, adding 3D controller to output causes doubled card id in some cases. - ------------------------------------ --- Harald Hope - Tue, 18 Mar 2014 19:17:55 -0700 - -===================================================================================== -Version: 2.1.5 -Patch Version: 00 -Script Date: 2014-03-17 ------------------------------------ -Changes: ------------------------------------ -New version, serious bug fix, do NOT use 2.1.4, it will fail to start. Bad copy/paste. - ------------------------------------ --- Harald Hope - Tue, 18 Mar 2014 01:30:53 -0700 - -===================================================================================== -Version: 2.1.4 -Patch Version: 00 -Script Date: 2014-03-17 ------------------------------------ -Changes: ------------------------------------ -New version. Some BSD fixes, and a more important fix, added 'display controller' -to graphics card detection, that's a new one on me. Dual card systems might use this. - -00:02.0 Display controller: Intel Corporation 82865G Integrated Graphics Controller (rev 02) - -01:00.0 VGA compatible controller: NVIDIA Corporation NV44A [GeForce 6200] (rev a1) - -Some more switches to bash native methods as well. - ------------------------------------ --- Harald Hope - Mon, 17 Mar 2014 19:23:42 -0700 - -===================================================================================== -Version: 2.1.3 -Patch Version: 00 -Script Date: 2014-03-15 ------------------------------------ -Changes: ------------------------------------ -New version. Big set of changes: changed all ver: and version: to v:; changed all bash -${var} to $var where appropriate to avoid extra overhead of ${..}; removed 'basename' -and replaced with ${path##*/} which avoids unnessary subshells. - -Fixed dynamic line wraps on -I and -S lines, now those in most cases will work well -down to 80 cols. - -Fixed bug in optical drives, at some point in the last few years, the kernel in /sys -changed the path to the optical drive data, added in /ata8/ (example) so both methods -are now handled. This should fix a lot of failures to show optical drive brand name etc. - -Added weechat detection, trying also supybot/limnoria detection in irc client version. -There was weechat-curses, but I guess they finally dropped the -curses. Limnoria is -a fork of supybot but still uses the supybot program name, but added in limnoria too -if they get around to changing that. - -More dynamic sizing tweaks, more optimization of code. Discovered that dipping into gawk -is almost 250x more expensive in terms of execution time than using bash variable. -Will change to use bash directly as time goes along where it's safe and accurate. - -Added handling to support /run paths using directories, like /run/gdm/gdm.pid for dm data. - ------------------------------------ --- Harald Hope - Sun, 16 Mar 2014 15:09:40 -0700 - -===================================================================================== -Version: 2.1.2 -Patch Version: 00 -Script Date: 2014-03-14 ------------------------------------ -Changes: ------------------------------------ -no version change, just added wrapper around tput cols so only use it if in terminal - ------------------------------------ --- Harald Hope - Sat, 15 Mar 2014 10:53:17 -0700 - -===================================================================================== -Version: 2.1.2 -Patch Version: 00 -Script Date: 2014-03-14 ------------------------------------ -Changes: ------------------------------------ -New version. Updated dynamic sizing, fixed some glitches in cpu flags, fixed bugs in -cpu main. Cleaned up a few more variable and width issues. Used a few more ${#var} for -counting. - ------------------------------------ --- Harald Hope - Fri, 14 Mar 2014 20:39:13 -0700 - -===================================================================================== -Version: 2.1.1 -Patch Version: 00 -Script Date: 2014-03-14 ------------------------------------ -Changes: ------------------------------------ -New Version, new man. This continues the dyanamic line sizing, I'm doing these one at a -time to make it easier to test stuff one by one. - -Full refactoring/reordering of top global variables, moved user/maintainer set variables -to top, and clearly identify all globals. - -Changed LINE_MAX to COL_MAX but all user configuration files will stay working since -inxi now will check for that and translate them to the new variable names. - -New lines fixed, -C cpu and -f cpu plus full flags. Flags output is now fully dynamic to -display screen in terminal/console. Moved cpu short flags to -x because it's not that -important in general and just clutters things up in my opinion. - -Print flags/bogomips on separate line if line greater than display width. - -The rest of the lines will get a similar treatment, but it takes a bit of trial and error -for each line to get it working right. - -Note that IRC line lengths are NOT dyanamic unless I can find a way to determine the column -width of irc clients, but that won't be accurate since fonts vary in widths for each character. - -CPU was the worst offender in my opinion in terms of regular output wrapping to new line messily, -next will be the things with ports/chip id/card id. - -Tightened up a bit more the dyanamic help / version output handler. - ------------------------------------ --- Harald Hope - Fri, 14 Mar 2014 13:14:51 -0700 - -===================================================================================== -Version: 2.1.0 -Patch Version: 00 -Script Date: 2014-03-13 ------------------------------------ -Changes: ------------------------------------ -New version, new man page. Finally, after all these years, dynamically resized to terminal -window column width help/version outputs. There is a significant slowdown to achieve this, -but I've optimized it as much as I could so it should be acceptable for most users now. - ------------------------------------ --- Harald Hope - Thu, 13 Mar 2014 19:26:32 -0700 - -===================================================================================== -Version: 2.0.0 -Patch Version: 00 -Script Date: 2014-03-12 ------------------------------------ -Changes: ------------------------------------ -New feature, not new line option though. Now shows init type with -x (also shows rc -type if openrc). -xx shows init / rc version number. Change runlevel to target if -systemd and if non numeric runlevel given. Should support systemd/upstart/epoch/runit -sysvinit. Supports openrc as extra data if it's present. Rearranged -I line a bit but -really just exchanged Runlevel: for Init: v: Runlevel: default: - -This is the first step, some of the init system ID methods are weak and non robust -and this may need to be revised, but it should for now identify systemd/upstart quite -accurately, and in most cases sysvinit. Note that to get sysvinit version number requires -tool: strings which in debian/ubuntu is in package binutils. I don't know the package names -for arch/fedora/etc for the recommends check tool in inxi yet. - -I believe this will be good enough for a first draft version, but over time we'll get it -more fine tuned, but as it is now, it should cover at least 99% of users, which isn't bad. - ------------------------------------ --- Harald Hope - Wed, 12 Mar 2014 17:12:11 -0700 - -===================================================================================== -Version: 1.9.19 -Patch Version: 00 -Script Date: 2014-03-03 ------------------------------------ -Changes: ------------------------------------ -New version; updated man page. Changed slightly the output for x server, in preparation -for adding alternate display servers, like Wayland or Mir. Rather than release all the -stuff at once I'm going to do it bit by bit. Currently I have not found a wayland iso -test cd that boots in virtual box so I will have to wait to really add support there. - ------------------------------------ --- Harald Hope - Mon, 03 Mar 2014 15:27:05 -0800 - -===================================================================================== -Version: 1.9.18 -Patch Version: 00 -Script Date: 2014-01-13 ------------------------------------ -Changes: ------------------------------------ -New version; new tarball; new man page. Added Unity desktop support; added -xx feature -to show default runlevel, using systemd/upstart/sysvinit type default tests. - -Fixed gtk library version detections, now will support dpkg/pacman version tests, which -should give more data to more people than previously, where the old tests usually would -return null unless gtk dev packages were installed on the system. - ------------------------------------ --- Harald Hope - Mon, 13 Jan 2014 14:57:38 -0800 - -===================================================================================== -Version: 1.9.17 -Patch Version: 00 -Script Date: 2013-12-02 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Fixed new gnome change, they, of course, removed gnome-about -and so version numbers failed. Now first trying gnome-session to get version number. - -Also, there's a bug in at least gtk detection in opensuse, not sure what it is, they could -be using a different syntax for the test: -pkg-config --modversion gtk+-3.0 - -returns no such package on gnome 3.10 installs, but I have no idea what package name to -test for there in this case. - -So leaving gtk version bugs unhandled due to no user information or feedback, if you want -it fixed or if it works for your distro, let me know and also if it does not work, tell -me the correct commmand, with its output, to get gtk version. - -That's for inxi -Sx output that is. - ------------------------------------ --- Harald Hope - Mon, 02 Dec 2013 13:48:35 -0800 - -===================================================================================== -Version: 1.9.16 -Patch Version: 00 -Script Date: October 6 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Only for uprmq distros, small update to add support for another -repo type output, the initial listing was not complete of possible syntaxes. Now handles: - -Nonfree Updates (Local19) /mnt/data/mirrors/mageia/distrib/cauldron/x86_64/media/nonfree/updates - -as well, apparently that is a possible output format in certain cases with urpmq. - -Non urpmq distros ignore this update, there are no other actual changes. - ------------------------------------ --- Harald Hope - Sun, 06 Oct 2013 11:06:36 -0700 - -===================================================================================== -Version: 1.9.15 -Patch Version: 00 -Script Date: October 4 2013 ------------------------------------ -Changes: ------------------------------------ -New version, tarball. Added urpmq for -r. - -Other distros than Mandriva, Mageia, no other changes so no need to update unless you want to. - -This adds support for Mandriva, Mageia. urpmq parsing is similar but not identical to pisi. - ------------------------------------ --- Harald Hope - Fri, 04 Oct 2013 18:24:55 -0700 - -===================================================================================== -Version: 1.9.14 -Patch Version: 00 -Script Date: September 10 2013 ------------------------------------ -Changes: ------------------------------------ -This does not have a new version number (there is a new date), and is only for solusos, -so all other distro maintainer can ignore this update. New tarball. Adds support for -solusos-release distro file in /etc/. - ------------------------------------ --- Harald Hope - Tue, 10 Sep 2013 10:49:29 -0700 - -===================================================================================== -Version: 1.9.14 -Patch Version: 00 -Script Date: August 20 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Fixed a bug / issue with failed usb nic detection, amazingly, the regex -in inxi failed to check for Ethernet.*Adapter, heh. Most usb nics are wifi, so I guess ethernet just -escaped me. - ------------------------------------ --- Harald Hope - Tue, 20 Aug 2013 12:26:10 -0700 - -===================================================================================== -Version: 1.9.13 -Patch Version: 00 -Script Date: August 12 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Fixed a bug in Xorg where it shows drivers as unloaded when they -are actually loaded. Since we can't fix xorg, inxi will try to work around this bug by validating -one step further in the Xorg.0.log data, to confirm that drivers noted as loaded/unloaded/failed are -actually running the display(s) of the system. - -There is a possible case of error that might happen due to this change in the case of a system with -a complex xorg that uses two drivers/modules to run two different displays, ie, nvidia on one, and amd -on the other, for example, or intel/nvidia, etc. However, if that bug appears, we'll get that data set -of debugging output and fix it at that point. - -This fix repairs an existing xorg bug that is unlikely to get fixed any time soon (the call to load the -detected drivers, eg, vesa, intel, is repeated, causing a failure of driver already loaded on the second -occurance. - ------------------------------------ --- Harald Hope - Mon, 12 Aug 2013 16:20:51 -0700 - -===================================================================================== -Version: 1.9.12 -Patch Version: 00 -Script Date: July 2 2013 ------------------------------------ -Changes: ------------------------------------ -Tiny change, no new version, removed a stray 's' line 4306 that may have made certain distro -ids get slightly corrupted, but this is so trivial just fixing it, new tarball. - ------------------------------------ --- Harald Hope - Sat, 13 Jul 2013 11:47:48 -0700 - -===================================================================================== -Version: 1.9.12 -Patch Version: 00 -Script Date: July 2 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Two new desktop/window managers added: spectrwm (similar to scrotwm) and -herbstluftwm. Both tested and working, thanks anticap from Antix for doing the testing/issue report on this. - ------------------------------------ --- Harald Hope - Mon, 01 Jul 2013 15:13:24 -0700 - -===================================================================================== -Version: 1.9.11 -Patch Version: 00 -Script Date: June 19 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. The recent bug fixes reminded me to check for ARM working, that had some bugs too, -so I've updated that. -f for ARM now shows features instead of flags, and the -C regular cpu output does not -show cache/flags for arm cpus becuase they don't have those features. - -Added some flags passed to various cpu functions and better detections of ARM cpu to handle dual core and other -issues that were not handled before as well, or at all. - ------------------------------------ --- Harald Hope - Wed, 19 Jun 2013 19:14:10 -0700 - -===================================================================================== -Version: 1.9.10 -Patch Version: 00 -Script Date: June 19 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Another stab at finally fixing the cpu / core count failures on fringe -cases. This required fixing some core logic assumptions that are not currently correct, particularly -on two cases, some xeon cpus fail to show core id for each core, showing 0 for all of them, second, -vm cpus do not show physical ids at all for at least intel, nor do they show core id. - -While we can't get HT totally reliable, particularly for vm xeon, since inxi has no way to know in -that case if a core is attached to a physical core or a virtual one, all of them being virtual in that -case, but still inxi is now reporting the correct number of cores, or threads in vm xeons, and is not -showing multicore cpus as single core, which was the main issue. - -This required redoing the counter logic for the cpu/core/physical arrays, now they are set independently, -and can handle any of the others not being set, without creating an error or failure condition. - -Also added in last check for a certain intel case where core id is 0 but > 1 physical cores exist, that -now also shows the correct cpu / core count. - -While this is tested on many data sets of proc cpuinfo, it's still possible there is a fringe case I have -not seen that will trigger yet another unexpected behavior. - ------------------------------------ --- Harald Hope - Wed, 19 Jun 2013 17:22:42 -0700 - -===================================================================================== -Version: 1.9.9 -Patch Version: 00 -Script Date: June 16 2013 ------------------------------------ -Changes: ------------------------------------ -new version, new tarball. Added support for openSUSE repo syntax/location, as long as it's -zypp or yum it will work. If it's both then it will show only one I believe, if that's a possible scenario, no idea. - -Added one more fix for those pesky intel vm cpu core errors, now if /proc/cpuinfo shows no siblings at all, -and no core_id, but does have physical id, it will use the count for physical id as a default for core count. - -Not perfect, but better than calling a dual core cpu a single core. - -There's still a lot of mysteries with vm versions of kvm cpus, for example, if you see a dual core xeon, is -that actually one core with ht, or two cores? There is no way to find that information out that I can see that is -reliable. ------------------------------------ --- Harald Hope - Sun, 16 Jun 2013 13:56:28 -0700 - -===================================================================================== -Version: 1.9.8 -Patch Version: 00 -Script Date: June 14 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Some subtle bug fixes, a kvm virtual machine uses disk id in -/proc/partitions of 253, which made the disk totals fail to show up at all. Added that in. - -Moved sourcing of configuration files to right after initialize_data so that some variables -can be forced to different values before the next set of system/app checks. - -This is to allow specifically turning off, for some headless servers where $DISPLAY is not -null due to a bash configuration bug, these: -B_SHOW_X_DATA='false' -B_RUNNING_IN_X='false' - -Setting those two to false in inxi.conf will turn off all the X checks etc even if the $DISPLAY -is set to non null. - -Added in support for ksplice kernel version, requires installed uptrack-uname, if that is -present and if uptrack-name kernel version is different from uname then it will add (ksplice) -to kernel version string, and use ksplice kernel version. Also created a single function -get_kernel_version for use by short form/long form inxi output. - -For intel xeon cpus, trying a work around for a bug in /proc/cpuinfo which fails to show core_id -or physical_id for cpus, using siblings / 2 for xeons with no actual core counts. - -Fixed a bug that made fixes for multimounted partitions fail for disk used. Added in support -for also excluding single partitions mounted to different places. - -Also fixed grsec kernel different handling of partitions in /proc/partition and df -hTP, doesn't use -standard partition numbering. This can't be perfect because inxi cannot know what the actual -disk sizes are, but it's an ok guess. example: /dev/xvdac (uses 'c' instead of '3' for partition, -and does not show anything for disk itself. - ------------------------------------ --- Harald Hope - Fri, 14 Jun 2013 12:36:57 -0700 - -===================================================================================== -Version: 1.9.7 -Patch Version: 00 -Script Date: May 25 2013 ------------------------------------ -Changes: ------------------------------------ -New tarball, version, man page. Improved remote weather, now it uses -W, and deprecated -! location=.. - -That was too hard to type and too hard to remember. Also do more dyanamic reordering of weather -output, depending on how much data is present, and how many x options are used. - -Added error handling for generic deprecated options, and for options that do not have the correct -syntax for OPTARG, like with -W. - -This should about do it for the weather option for now unless I missed something somewhere. - ------------------------------------ --- Harald Hope - Sat, 25 May 2013 20:16:01 -0700 - -===================================================================================== -Version: 1.9.6 -Patch Version: 00 -Script Date: May 19 2013 ------------------------------------ -Changes: ------------------------------------ -new version, tarball. Bug fix, overly loose regex removed na from country/state/city strings, -like nashville. - ------------------------------------ --- Harald Hope - Sun, 19 May 2013 20:06:44 -0700 - -===================================================================================== -Version: 1.9.5 -Patch Version: 00 -Script Date: May 18 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Fixed some lintian issues in man page, changed man/help for --! location= option, to indicate that users must replace space with + themselves. - -Because of how bash handles these options, inxi cannot add in + signs itself automatically. - -This should be closer to cleanup of this new feature. - ------------------------------------ --- Harald Hope - Sat, 18 May 2013 10:50:06 -0700 - -===================================================================================== -Version: 1.9.04 -Patch Version: 00 -Script Date: May 17 2013 ------------------------------------ -Changes: ------------------------------------ -new version, tarball. Fixed issue with spaces in names for cities/states/countries, added -man and help instructions to remove spaces and examples. - ------------------------------------ --- Harald Hope - Fri, 17 May 2013 22:35:59 -0700 - -===================================================================================== -Version: 1.9.03 -Patch Version: 00 -Script Date: May 17 2013 ------------------------------------ -Changes: ------------------------------------ -new tarball, version, bug fixes on weather, also optimized speed for slow isps, and added -a global that can be set in user / system configs to make a longer wget time out. Default -is 8 seconds. - -This should take care of the failure from slow load issue reported. - ------------------------------------ --- Harald Hope - Fri, 17 May 2013 22:07:29 -0700 - -===================================================================================== -Version: 1.9.02 -Patch Version: 00 -Script Date: May 17 2013 ------------------------------------ -Changes: ------------------------------------ - -new version, new tarball, bug fix for weather ------------------------------------ --- Harald Hope - Fri, 17 May 2013 21:10:21 -0700 - -===================================================================================== -Version: 1.9.01 -Patch Version: 00 -Script Date: May 17 2013 ------------------------------------ -Changes: ------------------------------------ -new tarball, version. Bug fix on -! location=, forgot to have it pack its own location -array, that's now correct. - ------------------------------------ --- Harald Hope - Fri, 17 May 2013 20:17:32 -0700 - -===================================================================================== -Version: 1.9.00 -Patch Version: 00 -Script Date: May 17 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball, new man page. Unless disabled by distribution maintainers, offers -weather -w option. With -x, -xx-, -xxx, shows more information. Basic line is just weather -and system time there. -x adds time zone, which is useful for servers, particurly web servers. --x also adds wind speed. -xx adds humidity and barometric pressure. -xxx adds a possible new line, -if data is available, heat index, wind chill, and dew point. --xxx also adds a line for location (blocked by irc/-z) / weather observation time. - --z filter applies as usual to location data, removes it in irc by default. -Z overrides override. - -The api this uses is probably going to be dropped at some point, so this is just going to work -while it works, then it will need to be updated at some point, so don't get very attached to it. - -Also adds option to, with -w: -! location= -This lets users send an alternate location using either or -or (commas for city,state and latitude,longitude are not optional, and the order -must be as listed. - -If There is a developer flag if distro maintainers do not want this enabled, simply set: -B_ALLOW_WEATHER='false' -before packaging and the weather feature will be disabled. - ------------------------------------ --- Harald Hope - Fri, 17 May 2013 18:47:24 -0700 - -===================================================================================== -Version: 1.8.47 -Patch Version: 00 -Script Date: May 3 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Made separators surround the partition id, that avoids any possible -errors with detections, also added in missing detection for separator. ------------------------------------ --- Harald Hope - Fri, 03 May 2013 15:41:26 -0700 - -===================================================================================== -Version: 1.8.46 -Patch Version: 00 -Script Date: May 3 2013 ------------------------------------ -Changes: ------------------------------------ -New version, tarball. Fixed a small issue that would create a wrong reporting of disk -useage if bind mounts are used, ie, multiple binds to a single mount. Now inxi will -check a list of the previously used partitions before adding the size of the used space -to the total used, if the partition has already been used it will skip it. This was/is -a quick and dirty fix, but it's totally fine I believe and should resolve two separate -issues: - -1. use of bind mount method, where multiple partition names are bound to the same partition -2. accidental dual mounting to the same partition. - -partitions section will still show the same data, ie, if bind is used, it will show all -the bind mounts even when they are attached/bound to a partition that is already listed. -This seems useful information, though maybe we can get the key word 'bind' in there somehow, -but for now I won't worry about that issue, that's just a nice to have, not a bug. - ------------------------------------ --- Harald Hope - Fri, 03 May 2013 13:52:44 -0700 - -===================================================================================== -Version: 1.8.45 -Patch Version: 00 -Script Date: March 2 2013 ------------------------------------ -Changes: ------------------------------------ -New version, tarball. As always with fixes, one thing creates a bug in another. Fixed -linux driver version handling, now only trimming off number from bsd drivers. - -Some linux drivers, like tg3 for broadcom ethernet, have numbers ending them. So this is -a bug fix for 1.8.44 release mainly. - -Also includes openbsd initial fixes for some issues related to sysctl parsing for cpu and ram. - ------------------------------------ --- Harald Hope - Sat, 02 Mar 2013 09:44:17 -0800 - -===================================================================================== -Version: 1.8.44 -Patch Version: 00 -Script Date: February 28 2013 ------------------------------------ -Changes: ------------------------------------ -no version change, just added 'chipset' to banlist to filter out. - ------------------------------------ --- Harald Hope - Thu, 28 Feb 2013 22:14:33 -0800 - -===================================================================================== -Version: 1.8.44 -Patch Version: 00 -Script Date: February 28 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. This version brings the -A, -G, -N, -n, -i pci data -to bsd. Using a pciconf parser to do most of the heavy lifting in this one. - -Two functions do the main pci card processing for audio, graphics, and networking. - -All seems to be shipshape and working, tested on freebsd 7.3, 9.0, and 9.1 and -the output is consistent. - ------------------------------------ --- Harald Hope - Thu, 28 Feb 2013 21:50:57 -0800 - -===================================================================================== -Version: 1.8.43 -Patch Version: 00 -Script Date: February 28 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Improved B_ALLOW_UPDATES handling, now if set to false, -turns off all -h and -H menu options for updating. Also triggers an error message -if you use -U or -! <10-16/http://>. - -Distro maintainers, take note, if you used the B_ALLOW_UPDATES flag, you no longer -need to change the code anywhere, the error messages and blocking the -h output for -update features is automatic as soon as the flag is set to 'false'. - -I needed to change the -! handling because -! is now also being used for extra features -like -! 31 and -! 32 and probably more stuff in the future, plus the -! 30 used by -things like the inxi gui tool being worked on by trash80. - -Also included in this version are more bsd changes, including initial function for pciconf -data parsing, this will be used for -A, -G, and -N options for card data. - -Further bsd improvements are better error/no data available messages for -D and -o. - ------------------------------------ --- Harald Hope - Thu, 28 Feb 2013 15:30:07 -0800 - -===================================================================================== -Version: 1.8.42 -Patch Version: 00 -Script Date: February 27 2013 ------------------------------------ -Changes: ------------------------------------ -New version, small bug fix, inxi failed to add in md raid partition size data to HDD used data. - -The hdd used still fails to properly calculate the actual raid sizes but that's a bit too tricky -to do easily so will leave that for some other time. - -Also added in more hdd used partition types for bsds, wd and ad type drivers for disks. - ------------------------------------ --- Harald Hope - Wed, 27 Feb 2013 23:13:00 -0800 - -===================================================================================== -Version: 1.8.41 -Patch Version: 00 -Script Date: February 27 2013 ------------------------------------ -Changes: ------------------------------------ -small change, new tarball, added some excludes items to unmounted list, scd, dvdrw, cdrw. - ------------------------------------ --- Harald Hope - Wed, 27 Feb 2013 22:26:32 -0800 - -===================================================================================== -Version: 1.8.41 -Patch Version: 00 -Script Date: February 27 2013 ------------------------------------ -Changes: ------------------------------------ -New version, updated man page. A bug fix for an old time bug: with mdraid, -o (unmounted -partitions) would show components of the md raid array as unmounted partitions. - -This is of course incorrect, and is now fixed. - -Small update of man page as well to note that -o will not show components of mdraid arrays. - ------------------------------------ --- Harald Hope - Wed, 27 Feb 2013 22:09:32 -0800 - -===================================================================================== -Version: 1.8.40 -Patch Version: 00 -Script Date: February 27 2013 ------------------------------------ -Changes: ------------------------------------ -New version, bug fix for mdraid, and cleaned up some errors and weak spots in component -output for mdraid. Certain conditions would trigger a false return for raid components, now -it shows more explicitly the online/spare/failed data so it's clear. Also shows 'none' for -online if none are detected. - ------------------------------------ --- Harald Hope - Wed, 27 Feb 2013 14:00:46 -0800 - -===================================================================================== -Version: 1.8.39 -Patch Version: 00 -Script Date: February 27 2013 ------------------------------------ -Changes: ------------------------------------ -New version, updated man page. Completed zfs raid support for bsds, now include component -status as with mdraid, will show offline/failed devices as well in standard output. - -Updated help and man page to reflect the difference between -R, -Rx, and -Rxx output for -zfs / mdraid. - -No linux inxi changes, this should not alter any behaviors in -R for mdraid, if it does, it's -a bug, please report it. - ------------------------------------ --- Harald Hope - Wed, 27 Feb 2013 12:42:02 -0800 - -===================================================================================== -Version: 1.8.38 -Patch Version: 00 -Script Date: February 18 2013 ------------------------------------ -Changes: ------------------------------------ -New version, updated man page, new tarball. - -Fixed partition bug that could falsely identify a remote filesystem like nfs as /dev fs - -Added two options: --! 31 - Turns off Host section of System line. This is useful if you want to post output -from server without posting its name. --! 32 - Turns on Host section if it has been disabled by user configuration file -B_SHOW_HOST='false' - -Added missing CPU data message, fixed missing cpu cache/bogomips output, turned off -bogomips if null for bsd systems because bogomips is a linux kernel feature. - -Added N/A for no memory report, this would mainly hit bsd systems where user has no -permissions to use sysctl or has no read rights for /var/run/dmesg.boot. - -Many fixes for partitions, now for bsd, if available, uses gpart list to get uuid/label -Added support for raid file system syntax in bsd, now excludes main raid device name, -and adds a flag to raiddevice/partitionname type so output can identify it as a raid -slice/partition. - -In man page, added -! 31 / -! 32 sections, and some other small edits. - -Added bsd raid line error message, added bsd sensors line error message. - -Many other small bug fixes that should make linux more robust in terms of missing -data, and better/cleaner output for bsd. - ------------------------------------ --- Harald Hope - Mon, 18 Feb 2013 12:24:39 -0800 - -===================================================================================== -Version: 1.8.37 -Patch Version: 00 -Script Date: February 11 2013 ------------------------------------ -Changes: ------------------------------------ -New tarball. Tiny fix for an obscure fringe case, leaving numbering as is. - -In some cases, dmidecode returns the grammatically wrong message: -'No smbios nor dmi data' instead of 'No smbios or dmi data', corrected the search -to look for simpler: 'no smbios ' to avoid that random error. - ------------------------------------ --- Harald Hope - Tue, 12 Feb 2013 09:54:51 -0800 - -===================================================================================== -Version: 1.8.37 -Patch Version: 00 -Script Date: February 11 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. This update fixes a recent bug report with ancient dmidecode versions, that do not -properly support the -s option. Now -M uses only one method for dmidecode, manual construction of the Machine -data from the raw dmidecode file. The file output is also parsed a bit to make it more consistently reliable -for inxi purposes. - -This update also includes all recent bsd branch updates, including the new #!/usr/bin/env bash on top which -lets inxi run in any environment without changes. Also for bsd, sets sed -i/sed -i '' global value, which -means that now all the branches are the same, except the bsd branches will contain the most recent tests -and bsd handling. - -As each step is reached, I'll release a new inxi that should be stable, this is the first one however that -can be used as is, no changes, for bsd, debian kfreebsd, and linux systems. - -Pleasen note that most bsd features are either incomplete or missing completely at this point, but it's a -start. - -Some initial changes as well to help options to show more correct linux or bsd terms. These will be updated -as time permits, it is a long process. - ------------------------------------ --- Harald Hope - Mon, 11 Feb 2013 20:55:49 -0800 - -===================================================================================== -Version: 1.8.36 -Patch Version: 00 -Script Date: February 8 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Cleaned up patch number sed cleanup that didn't work in bsd. - ------------------------------------ --- Harald Hope - Fri, 08 Feb 2013 20:50:23 -0800 - -===================================================================================== -Version: 1.8.36 -Patch Version: 00 -Script Date: February 8 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. All bug fixes and cleanup preparing to support bsd systems, including -kfreebsd from Debian. - -Cleaned up all sed and grep that will be used by bsds, added more granular flag for bsd types. - -Cleaned up and corrected issues between bsd/linux, more escapes and tests added to drop error -counts in bsds. - -Please note that you must use the inxi from branches/bsd for true bsds because sed has extra -i '' -added, and has the proper #!/usr/local/bin/bash - -Added -! 16 for gnubsd download/update, that's for gnu bsd systems like gnu/kfreebsd from debian. - -That retains the top #!/bin/bash path, and also uses gnu sed so no -i '' syntax. - -Moved some grep -o to gawk or sed to avoid using gnu grep unnecessarily, leaving gnu grep where -it will be linux only, for example parsing a /proc file. - -Fixed tty irc bugs for bsds and linux, now should show the right console size for both, ideally. - ------------------------------------ --- Harald Hope - Fri, 08 Feb 2013 20:36:02 -0800 - -===================================================================================== -Version: 1.8.35 -Patch Version: 00 -Script Date: February 7 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Note, this is a refactor release only, and features the core bsd -support built in, although inxi will not run in bsd unless the top: #!/bin/bash is changed -to #!/usr/local/bin/bash - -The actual bsd branch can be grabbed from: -http://inxi.googlecode.com/svn/branches/bsd/inxi -then you can keep that version updated using: inxi -! 15 -which will grab the latest bsd version from the svn server. - -This release also fixes a lot of small bugs that testing for bsd support exposed, but functionally -most people should see no difference, I just want to get this version up because there are -so many small changes that it's worth having a release. - -I was going to have the fixed dmidecode for old systems in 1.8.35 but that will have to wait til -1.8.36 - -Linux users should see no real changes, except maybe a thing or two will work in certain circumstances -when it didn't before, like showing MHz on ARM cpus on short inxi. - ------------------------------------ --- Harald Hope - Thu, 07 Feb 2013 19:56:19 -0800 - -===================================================================================== -Version: 1.8.34 -Patch Version: 00 -Script Date: January 28 2013 ------------------------------------ -Changes: ------------------------------------ -new version, new tarball, new man page. - -small change -Ixx will show running in tty if it's not in X, with tty number. - -sort of redundant to System: console: data, but that's ok, we'll live for now. - ------------------------------------ --- Harald Hope - Mon, 28 Jan 2013 16:12:45 -0800 - -===================================================================================== -Version: 1.8.33 -Patch Version: 00 -Script Date: January 28 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball, new man page. Fixed an old bug where if you start inxi with -an ssh command sometimes it will not show any client information, just the debugger -PPID output. Now it will test as a final check to see if it can detect any parent to -the process. Actually grandparent I believe. Seems to work, it's a fringe case but -why not handle it? - -New -xx feature, for -I it will show, if inxi is not running in IRC client and if -is running in X, and if the grandparent is not 'login', will show the application -the shell is running in. - -Example: -Info: Processes: 271 Uptime: 5:36 Memory: 3255.8/4048.5MB Runlevel: 3 - Gcc sys: 4.7.2 alt: 4.0/4.2/4.4/4.5/4.6 - Client: Shell (bash 4.2.37 - started in konsole) inxi: 1.8.33 - ------------------------------------ --- Harald Hope - Mon, 28 Jan 2013 15:57:15 -0800 - -===================================================================================== -Version: 1.8.32 -Patch Version: 00 -Script Date: January 23 2013 ------------------------------------ -Changes: ------------------------------------ -Small changes to man page, updated copyright date, added a patch contributor. - ------------------------------------ --- Harald Hope - Sat, 26 Jan 2013 18:48:37 -0800 - -===================================================================================== -Version: 1.8.32 -Patch Version: 00 -Script Date: January 23 2013 ------------------------------------ -Changes: ------------------------------------ -No version change. New tarball, updated man page. - -Some lintian changes for man page, escaped required -x type to \-x - ------------------------------------ --- Harald Hope - Sat, 26 Jan 2013 18:39:03 -0800 - -===================================================================================== -Version: 1.8.32 -Patch Version: 00 -Script Date: January 23 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Disabled -U in irc clients, with an exit error message. - ------------------------------------ --- Harald Hope - Wed, 23 Jan 2013 14:45:38 -0800 - -===================================================================================== -Version: 1.8.31 -Patch Version: 00 -Script Date: January 23 2013 ------------------------------------ -Changes: ------------------------------------ -New version, new tarball. Fixed overly verbose output for --version/-V in irc. Also updated -and made cleaner the version data in verbose mode, non irc. - -Fixed instance where program location would only show a dot . or relative path to inxi. Now -in version full will show the full path, or should. - -Basic version line now show: inxi 1.8.30-00 (January 22 2013) - -The verbose information/version shows the license information, website/irc support info, and -a few other changes. - -Also fixed a small bug where the copyright shows current year, not the actual year of the inxi -copyright contained in the top comment header. - ------------------------------------ --- Harald Hope - Wed, 23 Jan 2013 13:55:35 -0800 - -===================================================================================== -Version: 1.8.30 -Patch Version: 00 -Script Date: January 22 2013 ------------------------------------ -Changes: ------------------------------------ -Changing compression of inxi.1.gz to gzip -9 to fit lintian tests. This won't matter to anyone -at this point so no need to change anything. ------------------------------------ --- Harald Hope - Tue, 22 Jan 2013 19:27:54 -0800 - -===================================================================================== -Version: 1.8.30 -Patch Version: 00 -Script Date: January 22 2013 ------------------------------------ -Changes: ------------------------------------ -New Version, new tarball. Added inxi.changelog to tarball as well. - -Continuing fixes for ARM cpus, it was noted that short form inxi failed to show cpu speed -derived from bogomips. That's because of the old min/max output that short form used. - -Updated that section to now use N/A as flag, and if N/A for min/max speed, use the speed -given from first cpu array index, the one derived from bogomips for ARM/razberry pi. - -Note that there is still no other ARM /proc/cpuinfo available to see if the razberry pi -fixes work for all ARM cpus, but the fixes will stop hangs and endless loops at worst, -and may also show some type of cpu speeds for ARM cpus that are not in razpi devices. - ------------------------------------ --- Harald Hope - Tue, 22 Jan 2013 12:38:47 -0800 - -==================================================================================== -Script Version: 1.8.29 -Patch Version: 00 -Script Date: January 21 2012 ------------------------------------ -Changes: ------------------------------------ -Bug fix, new version, new tarball. - -quick work around fix for razberrie pi, get cpu data hung on arm /proc/cpuinfo because -it doesn't use the standard processor : [digit] format, but uses a string in the -processor : field, which then hangs inxi which was expecting an integer. - -Corrected this with a work around, but it will require a lot more ARM /proc/cpuinfo samples -before the support for ARM can be considered stable. - -For cpu speed, following wikipedia, used bogomips being equal to 1x cpu speed, to derive cpu speed. - -Better than nothing I guess, but will be wrong in other cases, particularly with dual core arm. ------------------------------------ --- Harald Hope - Mon, 21 Jan 2013 16:24:40 -0800 From f965cfc3ffedb3b821312775df9b74373aabdb9c Mon Sep 17 00:00:00 2001 From: inxi-svn Date: Mon, 11 Aug 2014 23:46:47 +0000 Subject: [PATCH 2/7] branch three, dmidecode cleanup --- inxi | 509 +++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 286 insertions(+), 223 deletions(-) diff --git a/inxi b/inxi index ece0fcd..f9d012d 100644 --- a/inxi +++ b/inxi @@ -1,9 +1,9 @@ #!/usr/bin/env bash ######################################################################## #### Script Name: inxi -#### Version: 2.1.27 -#### Date: 2014-05-02 -#### Patch Number: 00 +#### Version: 2.1.29 +#### Date: 2014-08-11 +#### Patch Number: 01-b3 ######################################################################## #### SPECIAL THANKS ######################################################################## @@ -1575,7 +1575,7 @@ debug_data_collector() local xiin_app='' xiin_data_file='' xiin_download='' error='' b_run_xiin='false' local debug_data_dir='' bsd_string='' xorg_d_files='' xorg_file='' a_distro_ids='' local completed_gz_file='' xiin_file='xiin.py' ftp_upload='ftp.techpatterns.com/incoming' - local Line='-------------------------' + local Line='-------------------------' root_string='' local start_directory=$( pwd ) local host=$( tr '[A-Z]' '[a-z]' <<< "$HOSTNAME" ) if [[ -n $host ]];then @@ -1586,8 +1586,11 @@ debug_data_collector() if [[ -n $BSD_TYPE ]];then bsd_string="-$BSD_TYPE" fi + if [[ $( whoami ) == 'root' ]];then + root_string='-root' + fi - debug_data_dir="inxi$bsd_string-$host-$(date +%Y%m%d-%H%M%S)-$1" + debug_data_dir="inxi$bsd_string-$host-$(date +%Y%m%d-%H%M%S)-$1$root_string" if [[ $B_IRC == 'false' ]];then if [[ -n $ALTERNATE_FTP ]];then @@ -1669,6 +1672,8 @@ debug_data_collector() ls /usr/bin/gcc* &> $debug_data_dir/gcc-sys-versions.txt gcc --version &> $debug_data_dir/gcc-version.txt clang --version &> $debug_data_dir/clang-version.txt + cat /etc/src.conf &> $debug_data_dir/bsd-etc-src-conf.txt + cat /etc/make.conf &> $debug_data_dir/bsd-etc-make-conf.txt cat /etc/issue &> $debug_data_dir/etc-issue.txt cat $FILE_LSB_RELEASE &> $debug_data_dir/lsb-release.txt cat $FILE_OS_RELEASE &> $debug_data_dir/os-release.txt @@ -1827,7 +1832,7 @@ debug_data_collector() echo 'Creating inxi output file now. This can take a few seconds...' echo "Starting $SCRIPT_NAME from: $start_directory" cd $start_directory - $SCRIPT_PATH/$SCRIPT_NAME -FRfrploudxxx -c 0 -@ 8 -y 120 > $SCRIPT_DATA_DIR/$debug_data_dir/inxi-FRfrploudxxxy120.txt + $SCRIPT_PATH/$SCRIPT_NAME -FRfrploudixxx -c 0 -@ 8 -y 120 > $SCRIPT_DATA_DIR/$debug_data_dir/inxi-FRfrploudixxxy120.txt cp $LOG_FILE $SCRIPT_DATA_DIR/$debug_data_dir if [[ -f $SCRIPT_DATA_DIR/$debug_data_dir.tar.gz ]];then echo "Found and removing previous tar.gz data file: $debug_data_dir.tar.gz" @@ -3462,7 +3467,7 @@ get_audio_data() else if (/kernel modules:/) { modules[audioCard] = modules[audioCard] gensub( /(.*): (.*)/ ,"\\2" ,"g" ,$0 ) "" } - else if (/I\/O/) { + else if (/^[[:space:]]*I\/O/) { portsTemp = gensub(/\t*I\/O ports at (.*) \[.*\]/,"\\1","g",$0) ports[audioCard] = ports[audioCard] portsTemp " " } @@ -4165,7 +4170,7 @@ get_desktop_environment() eval $LOGFS # set the default, this function only runs in X, if null, don't print data out - local desktop_environment='' xprop_root='' + local desktop_environment='' xprop_root='' version2='' local version='' version_data='' toolkit='' # works on 4, assume 5 will id the same, why not, no need to update in future @@ -4251,7 +4256,7 @@ get_desktop_environment() desktop_environment="MATE" # note, GNOME_DESKTOP_SESSION_ID is deprecated so we'll see how that works out # https://bugzilla.gnome.org/show_bug.cgi?id=542880 - elif [[ -n $GNOME_DESKTOP_SESSION_ID ]]; then + elif [[ -n $GNOME_DESKTOP_SESSION_ID || $XDG_CURRENT_DESKTOP == 'GNOME' ]]; then if type -p gnome-shell &>/dev/null;then version=$( get_program_version 'gnome-shell' 'gnome' '3' ) elif type -p gnome-about &>/dev/null;then @@ -4315,18 +4320,25 @@ get_desktop_environment() # note: openbox-lxde --version may be present, but returns openbox data version=$( get_program_version 'openbox' '^openbox' '2' ) if [[ $XDG_CURRENT_DESKTOP == 'LXDE' || \ - -n $( grep -is 'lxde' <<< "$Ps_aux_Data" ) ]];then + -n $( grep -is '/lxsession' <<< "$Ps_aux_Data" ) ]];then if [[ -n $version ]];then version="(Openbox $version)" fi desktop_environment='LXDE' - elif [[ -n $( grep -is 'razor-desktop' <<< "$Ps_aux_Data" ) ]];then + elif [[ $XDG_CURRENT_DESKTOP == 'Razor' || $XDG_CURRENT_DESKTOP == 'LXQt' ]] || \ + [[ -n $( grep -Eis '(razor-desktop|lxqt-session)' <<< "$Ps_aux_Data" ) ]];then + if [[ -n $( grep -is 'lxqt-session' <<< "$Ps_aux_Data" ) ]];then + desktop_environment='LXQt' + elif [[ -n $( grep -is 'razor-desktop' <<< "$Ps_aux_Data" ) ]];then + desktop_environment='Razor-Qt' + else + desktop_environment='LX-Qt-Variant' + fi if [[ -n $version ]];then version="(Openbox $version)" fi - desktop_environment='Razor-QT' else - desktop_environment='Openbox' + desktop_environment='Openbox' fi elif [[ -n $( grep -is 'ICEWM' <<< "$xprop_root" ) ]];then version=$( get_program_version 'icewm' '^icewm' '2' ) @@ -4880,9 +4892,9 @@ get_dmidecode_data() # note stripping out these lines: Handle 0x0016, DMI type 17, 27 bytes # but NOT deleting them, in case the dmidecode data is missing empty lines which will be # used to separate results. Then we remove the doubled empty lines to keep it clean and - # strip out all the stuff we don't want to see in the results. - DMIDECODE_DATA="$( $dmidecodePath 2>/dev/null \ - | gawk -F ':' ' + # strip out all the stuff we don't want to see in the results. We want the error data in + # stdout for error handling + DMIDECODE_DATA="$( $dmidecodePath 2>&1 | gawk -F ':' ' BEGIN { IGNORECASE=1 cutExtraTab="false" @@ -4946,9 +4958,18 @@ N /^\n$/D }' \ )" + log_function_data "DMIDECODE_DATA (PRE): $DMIDECODE_DATA" + if [[ ${#DMIDECODE_DATA} -lt 60 ]];then + if [[ -z ${DMIDECODE_DATA/*Permission denied*/} ]];then + DMIDECODE_DATA='dmidecode-error-requires-root' + # this handles very old systems, like Lenny 2.6.26, with dmidecode, but no data + elif [[ -n $( grep -i 'no smbios ' <<< "$DMIDECODE_DATA" ) ]];then + DMIDECODE_DATA='dmidecode-error-no-smbios-dmi-data' + fi + fi fi B_DMIDECODE_SET='true' - log_function_data "DMIDECODE_DATA: $DMIDECODE_DATA" + log_function_data "DMIDECODE_DATA (POST): $DMIDECODE_DATA" fi eval $LOGFE @@ -6099,112 +6120,107 @@ get_machine_data() else get_dmidecode_data if [[ -n $DMIDECODE_DATA ]];then - if [[ $B_ROOT == 'true' ]];then - # this handles very old systems, like Lenny 2.6.26, with dmidecode, but no data - if [[ -n $( grep -i 'no smbios ' <<< "$DMIDECODE_DATA" ) ]];then - array_string='dmidecode-no-smbios-dmi-data' - # please note: only dmidecode version 2.11 or newer supports consistently the -s flag - else - array_string=$( gawk -F ':' ' - BEGIN { - IGNORECASE=1 - baseboardManufacturer="" - baseboardProductName="" - baseboardSerialNumber="" - baseboardVersion="" - biosReleaseDate="" - biosRevision="" # only available from dmidecode - biosRomSize="" # only available from dmidecode - biosVendor="" - biosVersion="" - chassisManufacturer="" - chassisSerialNumber="" - chassisType="" - chassisVersion="" - systemManufacturer="" - systemProductName="" - systemVersion="" - systemSerialNumber="" - systemUuid="" - bItemFound="" # we will only output if at least one item was found - fullString="" - testString="" - bSys="" - bCha="" - bBio="" - bBas="" - } - /^Bios Information/ { - while ( getline && !/^$/ ) { - if ( $1 ~ /^Release Date/ ) { biosReleaseDate=$2 } - if ( $1 ~ /^BIOS Revision/ ) { biosRevision=$2 } - if ( $1 ~ /^ROM Size/ ) { biosRomSize=$2 } - if ( $1 ~ /^Vendor/ ) { biosVendor=$2 } - if ( $1 ~ /^Version/ ) { biosVersion=$2 } - } - testString=biosReleaseDate biosRevision biosRomSize biosVendor biosVersion - if ( testString != "" ) { - bItemFound="true" - } - bBio="true" - } - /^Base Board Information/ { - while ( getline && !/^$/ ) { - if ( $1 ~ /^Manufacturer/ ) { baseboardManufacturer=$2 } - if ( $1 ~ /^Product Name/ ) { baseboardProductName=$2 } - if ( $1 ~ /^Serial Number/ ) { baseboardSerialNumber=$2 } - } - testString=baseboardManufacturer baseboardProductName baseboardSerialNumber - if ( testString != "" ) { - bItemFound="true" - } - bBas="true" - } - /^Chassis Information/ { - while ( getline && !/^$/ ) { - if ( $1 ~ /^Manufacturer/ ) { chassisManufacturer=$2 } - if ( $1 ~ /^Serial Number/ ) { chassisSerialNumber=$2 } - if ( $1 ~ /^Type/ ) { chassisType=$2 } - if ( $1 ~ /^Version/ ) { chassisVersion=$2 } - } - testString=chassisManufacturer chassisSerialNumber chassisType chassisVersion - if ( testString != "" ) { - bItemFound="true" - } - bCha="true" - } - /^System Information/ { - while ( getline && !/^$/ ) { - if ( $1 ~ /^Manufacturer/ ) { systemManufacturer=$2 } - if ( $1 ~ /^Product Name/ ) { systemProductName=$2 } - if ( $1 ~ /^Version/ ) { systemVersion=$2 } - if ( $1 ~ /^Serial Number/ ) { systemSerialNumber=$2 } - if ( $1 ~ /^UUID/ ) { systemUuid=$2 } - } - testString=systemManufacturer systemProductName systemVersion systemSerialNumber systemUuid - if ( testString != "" ) { - bItemFound="true" - } - bSys="true" - } - ( bSys == "true" && bCha="true" && bBio == "true" && bBas == "true" ) { - exit # stop the loop - } - END { - if ( bItemFound == "true" ) { - fullString = systemManufacturer "," systemProductName "," systemVersion "," systemSerialNumber - fullString = fullString "," systemUuid "," baseboardManufacturer "," baseboardProductName - fullString = fullString "," baseboardVersion "," baseboardSerialNumber "," biosVendor - fullString = fullString "," biosVersion "," biosReleaseDate "," chassisManufacturer - fullString = fullString "," chassisType "," chassisVersion "," chassisSerialNumber - fullString = fullString "," biosRevision "," biosRomSize - - print fullString - } - }' <<< "$DMIDECODE_DATA" ) - fi + if [[ $DMIDECODE_DATA == 'dmidecode-error-'* ]];then + array_string=$DMIDECODE_DATA + # please note: only dmidecode version 2.11 or newer supports consistently the -s flag else - array_string='dmidecode-non-root-user' + array_string=$( gawk -F ':' ' + BEGIN { + IGNORECASE=1 + baseboardManufacturer="" + baseboardProductName="" + baseboardSerialNumber="" + baseboardVersion="" + biosReleaseDate="" + biosRevision="" # only available from dmidecode + biosRomSize="" # only available from dmidecode + biosVendor="" + biosVersion="" + chassisManufacturer="" + chassisSerialNumber="" + chassisType="" + chassisVersion="" + systemManufacturer="" + systemProductName="" + systemVersion="" + systemSerialNumber="" + systemUuid="" + bItemFound="" # we will only output if at least one item was found + fullString="" + testString="" + bSys="" + bCha="" + bBio="" + bBas="" + } + /^Bios Information/ { + while ( getline && !/^$/ ) { + if ( $1 ~ /^Release Date/ ) { biosReleaseDate=$2 } + if ( $1 ~ /^BIOS Revision/ ) { biosRevision=$2 } + if ( $1 ~ /^ROM Size/ ) { biosRomSize=$2 } + if ( $1 ~ /^Vendor/ ) { biosVendor=$2 } + if ( $1 ~ /^Version/ ) { biosVersion=$2 } + } + testString=biosReleaseDate biosRevision biosRomSize biosVendor biosVersion + if ( testString != "" ) { + bItemFound="true" + } + bBio="true" + } + /^Base Board Information/ { + while ( getline && !/^$/ ) { + if ( $1 ~ /^Manufacturer/ ) { baseboardManufacturer=$2 } + if ( $1 ~ /^Product Name/ ) { baseboardProductName=$2 } + if ( $1 ~ /^Serial Number/ ) { baseboardSerialNumber=$2 } + } + testString=baseboardManufacturer baseboardProductName baseboardSerialNumber + if ( testString != "" ) { + bItemFound="true" + } + bBas="true" + } + /^Chassis Information/ { + while ( getline && !/^$/ ) { + if ( $1 ~ /^Manufacturer/ ) { chassisManufacturer=$2 } + if ( $1 ~ /^Serial Number/ ) { chassisSerialNumber=$2 } + if ( $1 ~ /^Type/ ) { chassisType=$2 } + if ( $1 ~ /^Version/ ) { chassisVersion=$2 } + } + testString=chassisManufacturer chassisSerialNumber chassisType chassisVersion + if ( testString != "" ) { + bItemFound="true" + } + bCha="true" + } + /^System Information/ { + while ( getline && !/^$/ ) { + if ( $1 ~ /^Manufacturer/ ) { systemManufacturer=$2 } + if ( $1 ~ /^Product Name/ ) { systemProductName=$2 } + if ( $1 ~ /^Version/ ) { systemVersion=$2 } + if ( $1 ~ /^Serial Number/ ) { systemSerialNumber=$2 } + if ( $1 ~ /^UUID/ ) { systemUuid=$2 } + } + testString=systemManufacturer systemProductName systemVersion systemSerialNumber systemUuid + if ( testString != "" ) { + bItemFound="true" + } + bSys="true" + } + ( bSys == "true" && bCha="true" && bBio == "true" && bBas == "true" ) { + exit # stop the loop + } + END { + if ( bItemFound == "true" ) { + fullString = systemManufacturer "," systemProductName "," systemVersion "," systemSerialNumber + fullString = fullString "," systemUuid "," baseboardManufacturer "," baseboardProductName + fullString = fullString "," baseboardVersion "," baseboardSerialNumber "," biosVendor + fullString = fullString "," biosVersion "," biosReleaseDate "," chassisManufacturer + fullString = fullString "," chassisType "," chassisVersion "," chassisSerialNumber + fullString = fullString "," biosRevision "," biosRomSize + + print fullString + } + }' <<< "$DMIDECODE_DATA" ) fi fi fi @@ -6309,6 +6325,7 @@ get_module_version_number() eval $LOGFE } + ## create array of network cards get_networking_data() { @@ -6319,72 +6336,64 @@ get_networking_data() IFS=$'\n' A_NETWORK_DATA=( $( echo "$Lspci_v_Data" | gawk ' + # NOTE: see version 2.1.28 or earlier for old logic if for some reason it is needed again + # that used a modified string made from nic name for index, why, I have no idea, makes no sense and leads + # to wrong ordered output as well. get_audio_data uses the old logic for now too. BEGIN { IGNORECASE=1 - counter=0 # required to handle cases of > 1 instance of the same chipset + counter=0 } - /^[0-9a-f:\.]+ (ethernet|network) (controller|bridge)/ || /^[0-9a-f:\.]+ [^:]+: .*(ethernet|network).*$/ { - nic=gensub(/^[0-9a-f:\.]+ [^:]+: (.+)$/,"\\1","g",$0) - #gsub(/realtek semiconductor/, "Realtek", nic) - #gsub(/davicom semiconductor/, "Davicom", nic) + /^[0-9a-f:\.]+ ((ethernet|network) (controller|bridge)|infiniband)/ || /^[0-9a-f:\.]+ [^:]+: .*(ethernet|infiniband|network).*$/ { + aNic[counter]=gensub(/^[0-9a-f:\.]+ [^:]+: (.+)$/,"\\1","g",$0) + #gsub(/realtek semiconductor/, "Realtek", aNic[counter]) + #gsub(/davicom semiconductor/, "Davicom", aNic[counter]) # The doublequotes are necessary because of the pipes in the variable. - gsub(/'"$BAN_LIST_NORMAL"'/, "", nic) - gsub(/,/, " ", nic) - gsub(/^ +| +$/, "", nic) - gsub(/ [ \t]+/, " ", nic) - # construct a unique string ending for each chipset detected, this allows for - # multiple instances of the same exact chipsets, ie, dual gigabit - nic = nic "~~" counter++ - aPciBusId[nic] = gensub(/(^[0-9a-f:\.]+) [^:]+: .+$/,"\\1","g",$0) - # I do not understand why incrementing a string index makes sense? - eth[nic]++ + gsub(/'"$BAN_LIST_NORMAL"'/, "", aNic[counter]) + gsub(/,/, " ", aNic[counter]) + gsub(/^ +| +$/, "", aNic[counter]) + gsub(/ [ \t]+/, " ", aNic[counter]) + aPciBusId[counter] = gensub(/(^[0-9a-f:\.]+) [^:]+: .+$/,"\\1","g",$0) while ( getline && !/^$/ ) { gsub(/,/, "", $0) - if ( /I\/O/ ) { - ports[nic] = ports[nic] $4 " " + if ( /^[[:space:]]*I\/O/ ) { + aPorts[counter] = aPorts[counter] $4 " " } if ( /driver in use/ ) { - drivers[nic] = drivers[nic] gensub( /(.*): (.*)/ ,"\\2" ,"g" ,$0 ) "" + aDrivers[counter] = aDrivers[counter] gensub( /(.*): (.*)/ ,"\\2" ,"g" ,$0 ) "" } else if ( /kernel modules/ ) { - modules[nic] = modules[nic] gensub( /(.*): (.*)/ ,"\\2" ,"g" ,$0 ) "" + aModules[counter] = aModules[counter] gensub( /(.*): (.*)/ ,"\\2" ,"g" ,$0 ) "" } } + counter++ } - END { - j=0 - for (i in eth) { + for (i=0;i 1 ) { - a[j] = eth[i] "x " i - } - else { - a[j] = i - } ## note: this loses the plural ports case, is it needed anyway? - if ( ports[i] != "" ) { - usePorts = ports[i] + if ( aPorts[i] != "" ) { + usePorts = aPorts[i] } - if ( drivers[i] != "" ) { - useDrivers = drivers[i] + if ( aDrivers[i] != "" ) { + useDrivers = aDrivers[i] } - if ( modules[i] != "" ) { - useModules = modules[i] + if ( aModules[i] != "" ) { + useModules = aModules[i] + } + if ( aNic[i] != "" ) { + useNic=aNic[i] } if ( aPciBusId[i] != "" ) { usePciBusId = aPciBusId[i] } # create array primary item for master array - # and strip out the counter again, this handled dual cards with same chipset - sub( /~~[0-9]+$/, "", a[j] ) sub( / $/, "", usePorts ) # clean off trailing whitespace - print a[j] "," useDrivers "," usePorts "," useModules, "," usePciBusId - j++ + print useNic "," useDrivers "," usePorts "," useModules, "," usePciBusId } }' ) ) IFS="$ORIGINAL_IFS" @@ -6401,42 +6410,59 @@ get_networking_data() get_network_advanced_data() { eval $LOGFS - local a_network_adv_working='' if_path='' working_path='' working_uevent_path='' dir_path='' - local if_id='' speed='' duplex='' mac_id='' oper_state='' chip_id='' - local usb_data='' usb_vendor='' usb_product='' product_path='' driver_test='' + local a_network_adv_working='' if_data='' working_path='' working_uevent_path='' dir_path='' + local if_id='' speed='' duplex='' mac_id='' oper_state='' chip_id='' b_path_made='true' + local usb_data='' usb_vendor='' usb_product='' product_path='' driver_test='' array_counter=0 + local full_path='' + # we need to change to holder since we are updating the main array + IFS=$'\n' + local a_main_working=(${A_NETWORK_DATA[@]}) + IFS="$ORIGINAL_IFS" - for (( i=0; i < ${#A_NETWORK_DATA[@]}; i++ )) + for (( i=0; i < ${#a_main_working[@]}; i++ )) do IFS="," - a_network_adv_working=( ${A_NETWORK_DATA[i]} ) + a_network_adv_working=( ${a_main_working[i]} ) + IFS="$ORIGINAL_IFS" # reset these every go round driver_test='' - if_id='' - speed='' - duplex='' - mac_id='' - oper_state='' + if_data='' + product_path='' usb_data='' - chip_id='' + usb_product='' + usb_vendor='' + working_path='' + working_uevent_path='' if [[ -z $( grep '^usb-' <<< ${a_network_adv_working[4]} ) ]];then # note although this may exist technically don't use it, it's a virtual path # and causes weird cat errors when there's a missing file as well as a virtual path # /sys/bus/pci/devices/0000:02:02.0/net/eth1 # real paths are: /sys/devices/pci0000:00/0000:00:1e/0/0000:02:02.0/net/eth1/uevent # and on older debian kernels: /sys/devices/pci0000:00/0000:02:02.0/net:eth1/uevent - # but broadcom shows this sometimes: + # but broadcom shows this sometimes, and older kernels maybe: + # /sys/devices/pci0000:00/0000:00:01.0/0000:05:00.0/net/eth0/ # /sys/devices/pci0000:00/0000:00:03.0/0000:03:00.0/ssb0:0/uevent:['DRIVER=b43', 'MODALIAS=ssb:v4243id0812rev0D']: - working_path="/sys/bus/pci/devices/0000:${a_network_adv_working[4]}" + # echo a ${a_network_adv_working[4]} + if [[ -d /sys/bus/pci/devices/ ]];then + working_path="/sys/bus/pci/devices/0000:${a_network_adv_working[4]}" + elif [[ -d /sys/devices/pci0000:00/ ]];then + working_path="/sys/devices/pci0000:00/0000:00:01.0/0000:${a_network_adv_working[4]}" + fi + #echo wp ${a_network_adv_working[4]} $i # now we want the real one, that xiin also displays, without symbolic links. - if [[ -e $working_path ]];then + if [[ -n $working_path && -e $working_path ]];then working_path=$( readlink -f $working_path 2>/dev/null ) - # sometimes there is another directory between the path and /net - if [[ ! -e $working_path/net ]];then - # using find here, probably will need to also use it in usb part since the grep - # method seems to not be working now. Slice off the rest, which leaves the basic path - working_path=$( find $working_path/*/net/*/uevent 2>/dev/null | \ - sed 's|/net.*||' ) - fi + else + working_path=$( find -P /sys/ -type d -name "*:${a_network_adv_working[4]}" 2>/dev/null ) + # just on off chance we get two returns, just one one + working_path=${working_path%% *} + fi + # sometimes there is another directory between the path and /net + if [[ -n $working_path && ! -e $working_path/net ]];then + # using find here, probably will need to also use it in usb part since the grep + # method seems to not be working now. Slice off the rest, which leaves the basic path + working_path=$( find $working_path/*/net/*/uevent 2>/dev/null | \ + sed 's|/net.*||' ) fi # working_path=$( ls /sys/devices/pci*/*/0000:${a_network_adv_working[4]}/net/*/uevent ) else @@ -6459,7 +6485,6 @@ get_network_advanced_data() product_path=$( grep -s "$usb_product" /sys/devices/pci*/*/usb*/*/*/idProduct | \ sed -e "s/idProduct:$usb_product//" -e '/driver/d' ) fi - # make sure it's the right product/vendor match here, it will almost always be but let's be sure if [[ -n $working_path && -n $product_path ]] && [[ $working_path == $product_path ]];then #if [[ -n $working_path ]];then @@ -6477,50 +6502,90 @@ get_network_advanced_data() a_network_adv_working[1]=$driver_test fi fi + #echo wp: $working_path log_function_data "PRE: working_path: $working_path\nworking_uevent_path: $working_uevent_path" - # this applies in two different cases, one, default, standard, two, for usb, this is actually # the short path, minus the last longer numeric directory name, ie: # from debian squeeze 2.6.32-5-686: # /sys/devices/pci0000:00/0000:00:0b.1/usb1/1-1/net/wlan0/address if [[ -e $working_path/net ]];then - if_path=$( ls $working_path/net 2>/dev/null ) - if_id=$if_path - working_path=$working_path/net/$if_path + # in cases like infiniband dual port devices, there can be two ids, like ib0 ib1, + # with line break in output + if_data=$( ls $working_path/net 2>/dev/null ) + b_path_made='false' # this is the normal usb detection if the first one didn't work elif [[ -n $usb_data && -e $working_uevent_path/net ]];then - if_path=$( ls $working_uevent_path/net 2>/dev/null ) - if_id=$if_path - working_path=$working_uevent_path/net/$if_path + if_data=$( ls $working_uevent_path/net 2>/dev/null ) + working_path=$working_uevent_path/net/$if_data # 2.6.32 debian lenny kernel shows not: /net/eth0 but /net:eth0 - else - if_path=$( ls $working_path 2>/dev/null | grep 'net:' ) - if_id=$( cut -d ':' -f 2 <<< "$if_path" ) - working_path=$working_path/$if_path - fi - log_function_data "POST: working_path: $working_path\nif_path: $if_path - if_id: $if_id" - - if [[ -n $if_path ]];then - if [[ -r $working_path/speed ]];then - speed=$( cat $working_path/speed 2>/dev/null ) - fi - if [[ -r $working_path/duplex ]];then - duplex=$( cat $working_path/duplex 2>/dev/null ) - fi - if [[ -r $working_path/address ]];then - mac_id=$( cat $working_path/address 2>/dev/null ) - fi - if [[ -r $working_path/operstate ]];then - oper_state=$( cat $working_path/operstate 2>/dev/null ) + elif [[ -n ${working_path/\/sys*/} ]];then + if_data=$( ls $working_path 2>/dev/null | grep 'net:' ) + if [[ -n $if_data ]];then + working_path=$working_path/$if_data + # we won't be using this for path any more, just the actual if id output + # so prep it for the loop below + if_data=$( cut -d ':' -f 2 <<< "$if_data" ) fi fi - - if [[ -n ${a_network_adv_working[10]} ]];then - chip_id=${a_network_adv_working[10]} + # just in case we got a failed path, like /net or /, clear it out for tests below + if [[ -n ${working_path/\/sys*/} ]];then + working_path='' fi - A_NETWORK_DATA[i]=${a_network_adv_working[0]}","${a_network_adv_working[1]}","${a_network_adv_working[2]}","${a_network_adv_working[3]}","${a_network_adv_working[4]}","$if_id","$oper_state","$speed","$duplex","$mac_id","$chip_id - IFS="$ORIGINAL_IFS" + #echo id: $if_data + log_function_data "POST: working_path: $working_path\nif_data: $if_data - if_id: $if_id" + # there are virtual devices that will have no if data but which we still want in the array + # as it loops. These will also have null working_path as well since no **/net is found + # echo if_data: $if_data + if [[ -z $if_data ]];then + if_data='null-if-id' + fi + ## note: in cases of dual ports with different ids, this loop will create extra array items + for if_item in $if_data + do + chip_id= + duplex='' + full_path='' + if_id='' + mac_id='' + oper_state='' + speed='' + # strip out trailing spaces + if_item=${if_item%% } + #echo wp1: $working_path + if [[ $working_path != '' ]];then + if_id=$if_item + if [[ $b_path_made == 'false' ]];then + full_path=$working_path/net/$if_item + else + full_path=$working_path + fi + if [[ -r $full_path/speed ]];then + speed=$( cat $full_path/speed 2>/dev/null ) + fi + if [[ -r $full_path/duplex ]];then + duplex=$( cat $full_path/duplex 2>/dev/null ) + fi + if [[ -r $full_path/address ]];then + mac_id=$( cat $full_path/address 2>/dev/null ) + fi + if [[ -r $full_path/operstate ]];then + oper_state=$( cat $full_path/operstate 2>/dev/null ) + fi + if [[ -n ${a_network_adv_working[10]} ]];then + chip_id=${a_network_adv_working[10]} + fi + fi + + #echo fp: $full_path + #echo id: $if_id + # echo "$if_data ii: $if_item $array_counter i: $i" + A_NETWORK_DATA[$array_counter]=${a_network_adv_working[0]}","${a_network_adv_working[1]}","${a_network_adv_working[2]}","${a_network_adv_working[3]}","${a_network_adv_working[4]}","$if_id","$oper_state","$speed","$duplex","$mac_id","$chip_id + + ((array_counter++)) + done done + a_temp=${A_NETWORK_DATA[@]} + log_function_data "A_NETWORK_DATA (advanced): $a_temp" eval $LOGFE } @@ -6597,7 +6662,7 @@ get_networking_wan_ip_data() # awk has bad regex handling so checking it with grep -E instead # ip=$( echo 2001:0db8:85a3:0000:0000:8a2e:0370:7334 | gawk --re-interval ' # ip=$( wget -q -O - $WAN_IP_URL | gawk --re-interval ' - ip=$( wget -t 1 -T $WGET_TIMEOUT -q -O - $WAN_IP_URL | gawk --re-interval ' + ip=$( wget -t 4 -T $WGET_TIMEOUT -q -O - $WAN_IP_URL | gawk --re-interval ' { #gsub("\n","",$2") print $NF @@ -10320,7 +10385,7 @@ print_info_data() if [[ $shell_parent == 'login' ]];then shell_parent='' elif [[ -n $shell_parent ]];then - shell_parent=" running in $shell_parent" + shell_parent=" running in ${shell_parent##*/}" fi fi IRC_CLIENT="$IRC_CLIENT ($shell_data$shell_parent)" @@ -10561,11 +10626,10 @@ print_machine_data() system_line="${C2}$sysDmiNull" fi # patch to dump all of above if dmidecode was data source and non root user - if [[ ${A_MACHINE_DATA[0]} == 'dmidecode-non-root-user' || \ - ${A_MACHINE_DATA[0]} == 'dmidecode-no-smbios-dmi-data' ]];then - if [[ ${A_MACHINE_DATA[0]} == 'dmidecode-non-root-user' ]];then + if [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-'* ]];then + if [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-requires-root' ]];then system_line="${C2}${sysDmiError}dmidecode: you must be root to run dmidecode" - elif [[ ${A_MACHINE_DATA[0]} == 'dmidecode-no-smbios-dmi-data' ]];then + elif [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-no-smbios-dmi-data' ]];then system_line="${C2}${sysDmiError}dmidecode: no machine data available" fi mobo_line='' @@ -10598,11 +10662,10 @@ print_memory_data() memory_line=$( create_print_line "Memory:" "$memory_line${CN}" ) print_screen_output "$memory_line" - if [[ ${A_MEMORY_DATA[0]} == 'dmidecode-non-root-user' || \ - ${A_MEMORY_DATA[0]} == 'dmidecode-no-smbios-dmi-data' ]];then - if [[ ${A_MEMORY_DATA[0]} == 'dmidecode-non-root-user' ]];then + if [[ ${A_MEMORY_DATA[0]} == 'dmidecode-error-'* ]];then + if [[ ${A_MEMORY_DATA[0]} == 'dmidecode-error-requires-root' ]];then memory_line="${C2}${sysDmiError}dmidecode: you must be root to run dmidecode" - elif [[ ${A_MEMORY_DATA[0]} == 'dmidecode-no-smbios-dmi-data' ]];then + elif [[ ${A_MEMORY_DATA[0]} == 'dmidecode-error-no-smbios-dmi-data' ]];then memory_line="${C2}${sysDmiError}dmidecode: no machine data available" fi fi From c7d1eb2f6a28c9c91d1f072b826e979fe2413000 Mon Sep 17 00:00:00 2001 From: inxi-svn Date: Tue, 12 Aug 2014 00:27:46 +0000 Subject: [PATCH 3/7] branch three, dmiddecode fixes --- inxi | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/inxi b/inxi index f9d012d..f3672ef 100644 --- a/inxi +++ b/inxi @@ -3,7 +3,7 @@ #### Script Name: inxi #### Version: 2.1.29 #### Date: 2014-08-11 -#### Patch Number: 01-b3 +#### Patch Number: 02-b3 ######################################################################## #### SPECIAL THANKS ######################################################################## @@ -4888,7 +4888,9 @@ get_dmidecode_data() if [[ $B_DMIDECODE_SET != 'true' ]];then dmidecodePath=$( type -p dmidecode 2>/dev/null ) - if [[ -n $dmidecodePath ]];then + if [[ -z $dmidecodePath ]];then + DMIDECODE_DATA='dmidecode-error-not-installed' + else # note stripping out these lines: Handle 0x0016, DMI type 17, 27 bytes # but NOT deleting them, in case the dmidecode data is missing empty lines which will be # used to separate results. Then we remove the doubled empty lines to keep it clean and @@ -4959,12 +4961,14 @@ N }' \ )" log_function_data "DMIDECODE_DATA (PRE): $DMIDECODE_DATA" - if [[ ${#DMIDECODE_DATA} -lt 60 ]];then + if [[ ${#DMIDECODE_DATA} -lt 100 ]];then if [[ -z ${DMIDECODE_DATA/*Permission denied*/} ]];then DMIDECODE_DATA='dmidecode-error-requires-root' # this handles very old systems, like Lenny 2.6.26, with dmidecode, but no data elif [[ -n $( grep -i 'no smbios ' <<< "$DMIDECODE_DATA" ) ]];then DMIDECODE_DATA='dmidecode-error-no-smbios-dmi-data' + else + DMIDECODE_DATA='dmidecode-error-unknown-error' fi fi fi @@ -9969,6 +9973,21 @@ print_cpu_flags_full() done eval $LOGFE } +# args: $1 - get_dmidecode_data error return +print_dmidecode_error() +{ + eval $LOGFS + local error_message='Unknown dmidecode error.' + if [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-requires-root' ]];then + error_message="dmidecode: you must be root to run dmidecode" + elif [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-not-installed' ]];then + error_message="dmidecode: dmidecode is not installed." + elif [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-no-smbios-dmi-data' ]];then + error_message="dmidecode: no machine data available" + fi + echo $error_message + eval $LOGFE +} print_graphics_data() { @@ -10487,7 +10506,7 @@ print_machine_data() local system_line='' mobo_line='' bios_line='' chassis_line='' local mobo_vendor='' mobo_model='' mobo_version='' mobo_serial='' - local bios_vendor='' bios_version='' bios_date='' bios_rom='' + local bios_vendor='' bios_version='' bios_date='' bios_rom='' error_string='' local system_vendor='' product_name='' product_version='' product_serial='' product_uuid='' local chassis_vendor='' chassis_type='' chassis_version='' chassis_serial='' local b_skip_system='false' b_skip_chassis='false' @@ -10625,13 +10644,10 @@ print_machine_data() else system_line="${C2}$sysDmiNull" fi - # patch to dump all of above if dmidecode was data source and non root user + # patch to dump all of above if dmidecode was data source and a dmidecode error is present if [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-'* ]];then - if [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-requires-root' ]];then - system_line="${C2}${sysDmiError}dmidecode: you must be root to run dmidecode" - elif [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-no-smbios-dmi-data' ]];then - system_line="${C2}${sysDmiError}dmidecode: no machine data available" - fi + error_string=$( print_dmidecode_error "${A_MACHINE_DATA[0]}" ) + system_line=${C2}$sysDmiError$error_string mobo_line='' bios_line='' chassis_line='' From 3db4eb50a1f444f9e8e27197529d1cc8d22277d2 Mon Sep 17 00:00:00 2001 From: inxi-svn Date: Tue, 12 Aug 2014 00:53:46 +0000 Subject: [PATCH 4/7] branch three, more dmidecode --- inxi | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/inxi b/inxi index f3672ef..8753612 100644 --- a/inxi +++ b/inxi @@ -3,7 +3,7 @@ #### Script Name: inxi #### Version: 2.1.29 #### Date: 2014-08-11 -#### Patch Number: 02-b3 +#### Patch Number: 03-b3 ######################################################################## #### SPECIAL THANKS ######################################################################## @@ -9973,17 +9973,26 @@ print_cpu_flags_full() done eval $LOGFE } + # args: $1 - get_dmidecode_data error return print_dmidecode_error() { eval $LOGFS local error_message='Unknown dmidecode error.' + local sysDmiError='No /sys/class/dmi, using ' + + if [[ -n $BSD_TYPE ]];then + sysDmiError='Using ' + elif [[ $B_FORCE_DMIDECODE == 'true' ]];then + sysDmiError='Forcing ' + fi + if [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-requires-root' ]];then - error_message="dmidecode: you must be root to run dmidecode" + error_message="${sysDmiError}dmidecode: you must be root to run dmidecode" elif [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-not-installed' ]];then - error_message="dmidecode: dmidecode is not installed." + error_message="${sysDmiError}dmidecode: dmidecode is not installed." elif [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-no-smbios-dmi-data' ]];then - error_message="dmidecode: no machine data available" + error_message="${sysDmiError}dmidecode: no machine data available" fi echo $error_message eval $LOGFE @@ -10510,16 +10519,10 @@ print_machine_data() local system_vendor='' product_name='' product_version='' product_serial='' product_uuid='' local chassis_vendor='' chassis_type='' chassis_version='' chassis_serial='' local b_skip_system='false' b_skip_chassis='false' - local sysDmiError='No /sys/class/dmi, using ' local sysDmiNull='No /sys/class/dmi machine data: try newer kernel, or install dmidecode' # set A_MACHINE_DATA get_machine_data - if [[ -n $BSD_TYPE || $B_FORCE_DMIDECODE == 'true' ]];then - sysDmiError='' - sysDmiNull='No machine data available. Is dmidecode installed?' - fi - IFS=',' ## keys for machine data are: # 0-sys_vendor 1-product_name 2-product_version 3-product_serial 4-product_uuid @@ -10528,7 +10531,7 @@ print_machine_data() ## with extra data: # 12-chassis_vendor 13-chassis_type 14-chassis_version 15-chassis_serial - if [[ ${#A_MACHINE_DATA[@]} -gt 0 ]];then + if [[ ${#A_MACHINE_DATAs[@]} -gt 0 ]];then # note: in some case a mobo/version will match a product name/version, do not print those # but for laptops, or even falsely id'ed desktops with batteries, let's print it all if it matches # there can be false id laptops if battery appears so need to make sure system is filled From e8d871385b847b88de5426173b090dda2eff38c9 Mon Sep 17 00:00:00 2001 From: inxi-svn Date: Tue, 12 Aug 2014 05:03:05 +0000 Subject: [PATCH 5/7] branch three, testing ram feature --- inxi | 333 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 297 insertions(+), 36 deletions(-) diff --git a/inxi b/inxi index 8753612..1b3e1a5 100644 --- a/inxi +++ b/inxi @@ -1,9 +1,9 @@ #!/usr/bin/env bash ######################################################################## #### Script Name: inxi -#### Version: 2.1.29 +#### Version: 2.1.90 #### Date: 2014-08-11 -#### Patch Number: 03-b3 +#### Patch Number: 00 ######################################################################## #### SPECIAL THANKS ######################################################################## @@ -2660,6 +2660,7 @@ show_options() network tool). Same as -Nni. Not shown with -F for user security reasons, you shouldn't paste your local/wan IP." print_lines_basic "1" "-I" "Information: processes, uptime, memory, irc client (or shell type), $SCRIPT_NAME version." print_lines_basic "1" "-l" "$partition_string_u labels. Default: short $partition_string -P. For full -p output, use: -pl (or -plu)." + print_lines_basic "1" "-m" "Memory (RAM) data. Shows physical system memory arrays, and individual memory devices (sticks of memory). Shows physical memory array(s) capacity, and number of devices. For devices, shows bank, slot, size, speed, type (DDR3)." print_lines_basic "1" "-M" "Machine data. Motherboard, Bios, and if present, System Builder (Like Lenovo). Older systems/kernels without the required /sys data can use dmidecode instead, run as root. Dmidecode can be forced with -! 33" print_lines_basic "1" "-n" "Advanced Network card information. Same as -Nn. Shows interface, speed, mac id, state, etc." print_lines_basic "1" "-N" "Network card information. With -x, shows PCI BusID, Port number." @@ -4884,6 +4885,8 @@ get_dmidecode_data() { eval $LOGFS + local dmiData=" +" local dmidecodePath='' if [[ $B_DMIDECODE_SET != 'true' ]];then @@ -4896,6 +4899,7 @@ get_dmidecode_data() # used to separate results. Then we remove the doubled empty lines to keep it clean and # strip out all the stuff we don't want to see in the results. We want the error data in # stdout for error handling + # DMIDECODE_DATA="$( echo "$dmiData" | gawk -F ':' ' DMIDECODE_DATA="$( $dmidecodePath 2>&1 | gawk -F ':' ' BEGIN { IGNORECASE=1 @@ -4960,14 +4964,17 @@ N /^\n$/D }' \ )" + # echo ":${DMIDECODE_DATA/*Permission denied*/}:" log_function_data "DMIDECODE_DATA (PRE): $DMIDECODE_DATA" if [[ ${#DMIDECODE_DATA} -lt 100 ]];then if [[ -z ${DMIDECODE_DATA/*Permission denied*/} ]];then + # if [[ -n $( grep -i 'Permission denied' <<< "$DMIDECODE_DATA" ) ]];then DMIDECODE_DATA='dmidecode-error-requires-root' # this handles very old systems, like Lenny 2.6.26, with dmidecode, but no data elif [[ -n $( grep -i 'no smbios ' <<< "$DMIDECODE_DATA" ) ]];then DMIDECODE_DATA='dmidecode-error-no-smbios-dmi-data' else + echo $DMIDECODE_DATA DMIDECODE_DATA='dmidecode-error-unknown-error' fi fi @@ -8092,6 +8099,171 @@ get_raid_component_data_bsd() } # get_raid_data_bsd;exit +get_ram_data() +{ + eval $LOGFS + + local a_temp='' array_string='' + + get_dmidecode_data + + if [[ -n $DMIDECODE_DATA ]];then + if [[ $DMIDECODE_DATA == 'dmidecode-error-'* ]];then + A_MEMORY_DATA[0]=$DMIDECODE_DATA + # please note: only dmidecode version 2.11 or newer supports consistently the -s flag + else + IFS=$'\n' + A_MEMORY_DATA=( $( + gawk -F ':' ' + BEGIN { + IGNORECASE=1 + arrayHandle="" + bankLocator="" + clockSpeed="" + configuredClockSpeed="" + dataWidth="" + deviceManufacturer="" + devicePartNumber="" + deviceSerialNumber="" + deviceSpeed="" + deviceType="" + deviceTypeDetail="" + deviceSize="" + errorCorrection="" + formFactor="" + handle="" + location="" + locator="" + maxCapacity="" + numberOfDevices="" + primaryType="" + totalWidth="" + use="" + } + /^Handle .* DMI type 16/ { + primaryType="memory-array" + arrayHandle=gensub(/Handle[[:space:]]([0-9a-zA-Z]+)([[:space:]]|,).*/,"\\1",$0) + while ( getline && !/^$/ ) { + # print $0 + if ( $1 == "Maximum Capacity") { + maxCapacity=$2 + } + # note: these 3 have cleaned data in get_dmidecode_data, so replace stuff manually + if ( $1 == "Location") { + sub(/[[:space:]]Or[[:space:]]Motherboard/,"",$2) + location=$2 + if ( location == "" ){ + location="System Board" + } + } + if ( $1 == "Use") { + use=$2 + if ( use == "" ){ + use="System Memory" + } + } + if ( $1 == "Error Correction Type") { + errorCorrection=$2 + if ( errorCorrection == "" ){ + errorCorrection="None" + } + } + if ( $1 == "Number of Devices") { + numberOfDevices=$2 + } + } + print primaryType "," arrayHandle "," location "," maxCapacity "," numberOfDevices "," use "," errorCorrection + # reset + primaryType="" + arrayHandle="" + location="" + maxCapacity="" + numberOfDevices="" + use="" + errorCorrection="" + } + /^Handle .* DMI type 17/ { + primaryType="memory-device" + while ( getline && !/^$/ ) { + if ( $1 == "Array Handle") { + arrayHandle=$2 + } + if ( $1 == "Data Width") { + dataWidth=$2 + } + if ( $1 == "Total Width") { + totalWidth=$2 + } + if ( $1 == "Size") { + deviceSize=$2 + } + if ( $1 == "Locator") { + sub(/.*_/,"",$2) + locator=toupper($2) + } + if ( $1 == "Bank Locator") { + sub(/_.*/,"",$2) + sub(/Channel/,"bank",$2) + bankLocator=toupper($2) + } + if ( $1 == "Form Factor") { + formFactor=$2 + } + if ( $1 == "Type") { + deviceType=$2 + } + if ( $1 == "Type Detail") { + deviceTypeDetail=$2 + } + if ( $1 == "Speed") { + deviceSpeed=$2 + } + if ( $1 == "Configured Clock Speed") { + configuredClockSpeed=$2 + } + if ( $1 == "Manufacturer") { + sub(/([0]+|Undefined.*|Manufacturer.*)/,"",$2) + deviceManufacturer=$2 + } + if ( $1 == "Part Number") { + sub(/([0]+|PartNum.*|Undefined.*)/,"",$2) + devicePartNumber=$2 + } + if ( $1 == "Serial Number") { + sub(/([0]+|SerNum.*|Undefined.*)/,"",$2) + deviceSerialNumber=$2 + } + } + print primaryType "," arrayHandle "," deviceSize "," bankLocator "," locator "," formFactor "," deviceType "," deviceTypeDetail "," deviceSpeed "," configuredClockSpeed "," dataWidth "," totalWidth "," deviceManufacturer "," devicePartNumber "," deviceSerialNumber + + primaryType="" + arrayHandle="" + deviceSize="" + bankLocator="" + locator="" + formFactor="" + deviceType="" + deviceTypeDetail="" + deviceSpeed="" + configuredClockSpeed="" + dataWidth="" + totalWidth="" + deviceManufacturer="" + devicePartNumber="" + deviceSerialNumber="" + + } ' <<< "$DMIDECODE_DATA" ) ) + fi + fi + IFS="$ORIGINAL_IFS" + a_temp=${A_MEMORY_DATA[@]} + + # echo "${a_temp[@]}" + log_function_data "A_MEMORY_DATA: $a_temp" + + eval $LOGFE +} + # Repos will be added as we get distro package manager data to create the repo data. # This method will output the file name also, which is useful to create output that's # neat and readable. Each line of the total number contains the following sections, @@ -9444,7 +9616,7 @@ print_it_out() print_cpu_data fi if [[ $B_SHOW_MEMORY == 'true' ]];then - print_memory_data + print_ram_data fi if [[ $B_SHOW_GRAPHICS == 'true' ]];then print_graphics_data @@ -9974,25 +10146,27 @@ print_cpu_flags_full() eval $LOGFE } -# args: $1 - get_dmidecode_data error return +# args: $1 - type [sys/default]; $2 - get_dmidecode_data error return print_dmidecode_error() { eval $LOGFS local error_message='Unknown dmidecode error.' - local sysDmiError='No /sys/class/dmi, using ' + local sysDmiError='Using ' - if [[ -n $BSD_TYPE ]];then - sysDmiError='Using ' - elif [[ $B_FORCE_DMIDECODE == 'true' ]];then + if [[ $1 == 'sys' ]];then + sysDmiError='No /sys/class/dmi; using ' + fi + if [[ $B_FORCE_DMIDECODE == 'true' && $1 == 'sys' ]];then sysDmiError='Forcing ' fi - - if [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-requires-root' ]];then + if [[ $2 == 'dmidecode-error-requires-root' ]];then error_message="${sysDmiError}dmidecode: you must be root to run dmidecode" - elif [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-not-installed' ]];then + elif [[ $2 == 'dmidecode-error-not-installed' ]];then error_message="${sysDmiError}dmidecode: dmidecode is not installed." - elif [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-no-smbios-dmi-data' ]];then - error_message="${sysDmiError}dmidecode: no machine data available" + elif [[ $2 == 'dmidecode-error-no-smbios-dmi-data' ]];then + error_message="${sysDmiError}dmidecode: no smbios data available. Old system?" + elif [[ $2 == 'dmidecode-error-unknown-error' ]];then + error_message="${sysDmiError}dmidecode: unknown error occured" fi echo $error_message eval $LOGFE @@ -10531,7 +10705,7 @@ print_machine_data() ## with extra data: # 12-chassis_vendor 13-chassis_type 14-chassis_version 15-chassis_serial - if [[ ${#A_MACHINE_DATAs[@]} -gt 0 ]];then + if [[ ${#A_MACHINE_DATA[@]} -gt 0 ]];then # note: in some case a mobo/version will match a product name/version, do not print those # but for laptops, or even falsely id'ed desktops with batteries, let's print it all if it matches # there can be false id laptops if battery appears so need to make sure system is filled @@ -10643,14 +10817,14 @@ print_machine_data() chassis_line='' fi fi - IFS="$ORIGINAL_IFS" else system_line="${C2}$sysDmiNull" fi + IFS="$ORIGINAL_IFS" # patch to dump all of above if dmidecode was data source and a dmidecode error is present if [[ ${A_MACHINE_DATA[0]} == 'dmidecode-error-'* ]];then - error_string=$( print_dmidecode_error "${A_MACHINE_DATA[0]}" ) - system_line=${C2}$sysDmiError$error_string + error_string=$( print_dmidecode_error 'sys' "${A_MACHINE_DATA[0]}" ) + system_line=${C2}$error_string mobo_line='' bios_line='' chassis_line='' @@ -10673,25 +10847,6 @@ print_machine_data() eval $LOGFE } -print_memory_data() -{ - eval $LOGFS - local memory_line="${C1}Placeholder$SEP3${C2} Feature not yet developed" - - memory_line=$( create_print_line "Memory:" "$memory_line${CN}" ) - print_screen_output "$memory_line" - - if [[ ${A_MEMORY_DATA[0]} == 'dmidecode-error-'* ]];then - if [[ ${A_MEMORY_DATA[0]} == 'dmidecode-error-requires-root' ]];then - memory_line="${C2}${sysDmiError}dmidecode: you must be root to run dmidecode" - elif [[ ${A_MEMORY_DATA[0]} == 'dmidecode-error-no-smbios-dmi-data' ]];then - memory_line="${C2}${sysDmiError}dmidecode: no machine data available" - fi - fi - - eval $LOGFE -} - # args: $1 - module name (could be > 1, so loop it ); $2 - audio (optional) print_module_version() { @@ -11704,6 +11859,112 @@ print_raid_data() eval $LOGFE } +print_ram_data() +{ + eval $LOGFS + local memory_line="${C1}Placeholder$SEP3${C2} Feature not yet developed" + local error_string='' a_memory_item='' line_starter='Memory:' array_counter=0 + local dmidecodeNull='No dmidecode memory data: try newer kernel.' + + local manufacturer='' part_nu='' serial_nu='' device_speed='' configured_speed='' + local data_width='' total_width='' device_type='' device_type_detail='' bank='' slot='' form_factor='' + local device_size='' array_use='' location='' error_correction='' max_capacity='' nu_of_devices='' + + get_ram_data + + #echo ${#A_MEMORY_DATA[@]} + # echo ${A_MEMORY_DATA[0]} + if [[ ${#A_MEMORY_DATA[@]} -gt 0 ]];then + if [[ ${A_MEMORY_DATA[0]} == 'dmidecode-error-'* ]];then + error_string=$( print_dmidecode_error 'default' "${A_MEMORY_DATA[0]}" ) + memory_line="${C2}$error_string" + else + for (( i=0;i<${#A_MEMORY_DATA[@]};i++ )) + do + IFS=',' + a_memory_item=(${A_MEMORY_DATA[i]}) + IFS="$ORIGINAL_IFS" + # memory-array,0x0012,System Board,8 GB,4,System Memory,None + # memory-device,0x002C,8192 MB,ChannelD,ChannelD_Dimm2,DIMM,DDR3,Synchronous,2400 MHz,2400 MHz,64 bits,64 bits,Undefined,F3-19200C10-8GBZH,00000000 + + if [[ ${a_memory_item[0]} == 'memory-array' ]];then + if [[ -n ${a_memory_item[4]} ]];then + nu_of_devices=${a_memory_item[4]} + else + nu_of_devices='N/A' + fi + if [[ -n ${a_memory_item[3]} ]];then + max_capacity=${a_memory_item[3]} + else + max_capacity='N/A' + fi + if [[ -n ${a_memory_item[6]} ]];then + error_correction=${a_memory_item[6]} + else + error_correction='N/A' + fi + memory_line="${C1}Array$SEP3${C2} $array_counter ${C1}Capacity$SEP3${C2} $max_capacity ${C1}Devices$SEP3${C2} $nu_of_devices ${C1}EC$SEP3${C2} $error_correction" + (( array_counter++ )) + else + if [[ -n ${a_memory_item[3]} ]];then + if [[ -z ${a_memory_item[3]/BANK*/} ]];then + bank=${a_memory_item[3]#BANK} + else + bank=${a_memory_item[3]} + fi + else + bank='N/A' + fi + if [[ -n ${a_memory_item[4]} ]];then + if [[ -z ${a_memory_item[4]/DIMM*/} ]];then + slot=${a_memory_item[4]#DIMM} + else + slot=${a_memory_item[4]} + fi + else + slot='N/A' + fi + if [[ -n ${a_memory_item[2]} ]];then + device_size=${a_memory_item[2]} + else + device_size='N/A' + fi + if [[ -n ${a_memory_item[6]} ]];then + device_type=${a_memory_item[6]} + else + device_type='N/A' + fi + if [[ -n ${a_memory_item[8]} ]];then + if [[ -n ${a_memory_item[9]} ]];then + device_speed=${a_memory_item[9]} + else + device_speed=${a_memory_item[8]} + fi + else + device_speed='N/A' + fi + memory_line="${C1}Bank$SEP3${C2} $bank ${C1}Slot$SEP3${C2} $slot ${C1}size$SEP3${C2} $device_size ${C1}speed$SEP3${C2} $device_speed ${C1}type$SEP3${C2} $device_type " + fi + memory_line=$( create_print_line "$line_starter" "$memory_line${CN}" ) + print_screen_output "$memory_line" + line_starter='' + done + memory_line=' ' + fi + else + memory_line="${C2}$dmidecodeNull" + fi + IFS="$ORIGINAL_IFS" + memory_line=${memory_line## } + if [[ -n $memory_line ]];then + memory_line=$( create_print_line "$line_starter" "$memory_line${CN}" ) + print_screen_output "$memory_line" + fi + + eval $LOGFE +} + + # currently only apt using distros support this feature, but over time we can add others print_repo_data() { From 973cbadcac11575671298ac42ea7caa3dc35f178 Mon Sep 17 00:00:00 2001 From: inxi-svn Date: Tue, 12 Aug 2014 05:04:19 +0000 Subject: [PATCH 6/7] branch three, numbering change --- inxi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inxi b/inxi index 1b3e1a5..2819920 100644 --- a/inxi +++ b/inxi @@ -3,7 +3,7 @@ #### Script Name: inxi #### Version: 2.1.90 #### Date: 2014-08-11 -#### Patch Number: 00 +#### Patch Number: 06-b3 ######################################################################## #### SPECIAL THANKS ######################################################################## From 1de90298a691de13c7f4308fdb9438148b02ccae Mon Sep 17 00:00:00 2001 From: inxi-svn Date: Tue, 12 Aug 2014 05:13:23 +0000 Subject: [PATCH 7/7] branch three, cleanup of output --- inxi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/inxi b/inxi index 2819920..4a66d8d 100644 --- a/inxi +++ b/inxi @@ -3,7 +3,7 @@ #### Script Name: inxi #### Version: 2.1.90 #### Date: 2014-08-11 -#### Patch Number: 06-b3 +#### Patch Number: 07-b3 ######################################################################## #### SPECIAL THANKS ######################################################################## @@ -11909,6 +11909,7 @@ print_ram_data() if [[ -n ${a_memory_item[3]} ]];then if [[ -z ${a_memory_item[3]/BANK*/} ]];then bank=${a_memory_item[3]#BANK} + bank=${bank## } else bank=${a_memory_item[3]} fi @@ -11918,6 +11919,7 @@ print_ram_data() if [[ -n ${a_memory_item[4]} ]];then if [[ -z ${a_memory_item[4]/DIMM*/} ]];then slot=${a_memory_item[4]#DIMM} + slot=${slot## } else slot=${a_memory_item[4]} fi