Linux System Stats Script


68 replies to this topic - - - - -

#61 xorangekiller

    Delightfully Insane

  • 726 posts
  • Joined: 24-January 09
  • Location: Virginia, USA
  • OS: Debian Wheezy

Posted 06 December 2012 - 04:28

I screwed up. I created a Linux Mint 14 virtual machine on my more powerful machine and installed every desktop environment detected by my last patch for testing purposes. Although I tested the desktop environment dection aspect of the script fairly thoroughly, I didn't test the logos I added at all.

When I tested this script on my latop a few minutes ago, I discovered that the Debian logo didn't print correctly. Then I tested the other logos and discovered that some of them failed to print correctly too. Additionally, apparently the processor information in /proc/cpuinfo is not terribly similar between CPU architectures. It looks close to the same for most Intel and AMD CPUs, but it is completely different on the PowerPC and ARM CPUs that I tested. Therefore I wrote a new version of my previous patch that solves both of those issues.

The patch posted below was created against stats 0.8.1, not my previously patched version. The complete new version of the script is attached to this post.

--- stats.sh.orig	2012-12-04 16:18:57.000000000 -0500
+++ stats.sh	2012-12-05 23:00:00.039778198 -0500
@@ -1,119 +1,337 @@
#!/bin/bash
-clear
-
-
-echo ""
-#echo "				  ___"
-#echo "			,g@@@@@@@@@@@p,			"
-#echo "		 ,@@@@@@@@@@@D****4@@.		 "
-#echo "	   ,@@@@@@@@@@P'		'%@.	   "
-#echo "	  y@@@@@@@@@@F   ,g@@p.  !3@k	  "
-#echo "	 !@@@@@@@@@@@.  !@@@@@@@@@@@@k	 "
-#echo "	:@@@@@@@@@@@@   J@@@@@@@@@@@@@L	"
-#echo "	J@@@@@@@@@***   '***@@@@@@@@@@)	"
-#echo "	J@@@@@@@@@		  @@@@@@@@@@)	"
-#echo "	J@@@@@@@@@@@@   J@@@@@@@@@@@@@L	"
-#echo "	J@@@@@@@@@@@@   J@@@@@@@@@@@@F	 "
-#echo "	J@@@@@@@@@@@F   {@@@@@@@@@@@F	  "
-#echo "	J@@@E.  ''*^'   i@@@@@@@@@@B^	   "
-#echo "	J@@@@@._	  ,@@@@@@@@@@P'		 "
-#echo "	J@@@@@@@@@@@@@@@@@@BP*'	  "
-#echo ""
-echo ""
-
-
-
-
-os=$(cat /etc/*-release | grep "^PRETTY_NAME=" | sed -r 's/PRETTY_NAME="?([^"]+)"?/\1/')
-host=$(uname -n)
-kernel=$(uname -r)
-# get the uptime data
-days=$(uptime | awk '{print $3}' | sed 's/,//g')
-hours=$(uptime | awk '{print $5}' | sed 's/,//g')
-label=$(uptime | awk '{print $4}')
-totalram=$(awk '/MemTotal/{print $2}' /proc/meminfo)
-ram=$((totalram/1024))
-user=$(whoami)
-res=$(xdpyinfo | grep dimensions | awk {'print $2'})
-load=$(uptime | awk -F 'load average:' '{ print $2 }')
-cpu=$(cat /proc/cpuinfo | grep "model name" | sed -r 's/model name"?([^"]+)"?:/\1/' | head -n 1)
-
-
-if [ -z "$os" ]
-then
-echo "	$(tput bold)$(tput setaf 4)OS:$(tput sgr0)			 Not Found"
-else
-echo "	$(tput bold)$(tput setaf 4)OS:$(tput sgr0)"			 $os
-fi
-
-echo "	$(tput bold)$(tput setaf 4)Hostname:$(tput sgr0)" $host
-
-
-# get the uptime data
-
-days=$(uptime | awk '{print $3}' | sed 's/,//g')
-hours=$(uptime | awk '{print $5}' | sed 's/,//g')
-label=$(uptime | awk '{print $4}')

+# Copyright (c) 2012, Haggis
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met :
+#
+#   * Redistributions of source code must retain the above copyright notice,
+#	 this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright notice,
+#	 this list of conditions and the following disclaimer in the documentation
+#	 and/or other materials provided with the distribution.
+#   * Neither the name of any individual or organization nor the names of its
+#	 contributors may be used to endorse or promote products derived from this
+#	 software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# ( INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+########################################################################
+#						   Global Variables						   #
+########################################################################
+
+unset os		 # Human-readable (pretty) name of the operating system
+unset host	   # Hostname
+unset kernel	 # Linux kernel build string
+
+unset days	   # Days the system has been online
+unset hours	  # Hours the system has been online (in relation to days)
+unset label	  # Precision of days, hours, minutes, or seconds
+unset day_label  # day/days
+unset hour_label # hour/hours
+
+unset totalram   # Size of installed RAM in kilabytes
+unset ram		# Size of installed RAM in megabytes
+unset user	   # Name of the user running this script
+unset res		# Resolution of the current X session
+unset load	   # Load average since the last reboot
+unset cpu		# CPU identifier information
+
+unset de		 # Desktop environment (or window manager) running
+unset ver		# DE version information, if available
+
+########################################################################
+#						   Primary Functions						  #
+########################################################################
+
+# Print a pretty logo for the Linux distribution the user is running.
+function print_logo
+{
+	id="$(cat /etc/*-release | grep -E '^ID[ ]*=[ ]*[A-Za-z]+[ ]*' | cut -d '=' -f 2)"
+	case $id in
+		ubuntu)
+			echo "									   "
+			echo "			  ..''''''..			   "
+			echo "		  .;::::::::::::::;.		   "
+			echo "	   .;::::::::::::::'.':::;.		"
+			echo "	 .;::::::::;,'..';.   .::::;.	  "
+			echo "	.:::::::,.,.	  ....:::::::.	 "
+			echo "   .:::::::.   :;::::,.   .:::::::.	"
+			echo "   ;::::::   .::::::::::.   ::::::;	"
+			echo "   :::.  .'  ::::::::::::...,::::::	"
+			echo "   :::.  .'  ::::::::::::...,::::::	"
+			echo "   ;::::::   .::::::::::.   ::::::;	"
+			echo "   .:::::::.   :,;::;,.   .:::::::.	"
+			echo "	.:::::::;.;.	  ....:::::::.	 "
+			echo "	  ;::::::::;,'..';.   .::::;	   "
+			echo "	   .;::::::::::::::'.':::;.		"
+			echo "		  .,::::::::::::::,.		   "
+			echo "			  ...''''...			   "
+			echo "									   "
+			;;
+		mint)
+			echo '									   '
+			echo '.:::::::::::::::::::::::::;,.		  '
+			echo ',0000000000000000000000000000Oxl,	  '
+			echo ',00,					   ..,cx0Oo.   '
+			echo ',00,	   ,,.				  .cO0o  '
+			echo ',00l,,.   `00;	   ..	 ..	.k0x '
+			echo '`kkkkO0l  `00;	ck000Odlk000Oo.  .00c'
+			echo '	 d0k  `00;   x0O:.`d00O;.,k00.  x0x'
+			echo '	 d0k  `00;  .00x   ,00o   ;00c  d0k'
+			echo '	 d0k  `00;  .00d   ,00o   ,00c  d0k'
+			echo '	 d0k  `00;  .00d   ,00o   ,00c  d0k'
+			echo '	 d0k  `00;   ;;`   .;;.   .cc`  d0k'
+			echo '	 d0O  .00d				...   d0k'
+			echo '	 ;00,  :00x:,,,,		.....   d0k'
+			echo '	  o0O,  .:dO000k...........	 d0k'
+			echo '	   :O0x,						x0k'
+			echo '		 :k0Odc,`.................;x00k'
+			echo '		   .;lxO0000000000000000000000k'
+			echo '				 ......................'
+			echo '									   '
+			;;
+		fedora)
+			echo '									   '
+			echo '				  ___				  '
+			echo '			,g@@@@@@@@@@@p,			'
+			echo '		 ,@@@@@@@@@@@D****4@@.		 '
+			echo '	   ,@@@@@@@@@@P`		`%@.	   '
+			echo '	  y@@@@@@@@@@F   ,g@@p.  !3@k	  '
+			echo '	 !@@@@@@@@@@@.  !@@@@@@@@@@@@k	 '
+			echo '	:@@@@@@@@@@@@   J@@@@@@@@@@@@@L	'
+			echo '	J@@@@@@@@@***   `***@@@@@@@@@@)	'
+			echo '	J@@@@@@@@@		  @@@@@@@@@@)	'
+			echo '	J@@@@@@@@@@@@   J@@@@@@@@@@@@@L	'
+			echo '	J@@@@@@@@@@@@   J@@@@@@@@@@@@F	 '
+			echo '	J@@@@@@@@@@@F   {@@@@@@@@@@@F	  '
+			echo '	J@@@E.  ``*^`   i@@@@@@@@@@B^	  '
+			echo '	J@@@@@._	  ,@@@@@@@@@@P`		'
+			echo '	J@@@@@@@@@@@@@@@@@@BP*`			'
+			echo '									   '
+			;;
+		debian)
+			echo '									   '
+			echo '			  _,met$$$$$gg.			'
+			echo '		   ,g$$$$$$$$$$$$$$$P.		 '
+			echo '		 ,g$$P$$	   $$$Y$$.$.	   '
+			echo '		,$$P`			  `$$$.	   '
+			echo '	   ,$$P	   ,ggs.	 `$$b:	  '
+			echo '	   d$$`	 ,$P$`   .	$$$	   '
+			echo '	   $$P	  d$`	 ,	$$P	   '
+			echo '	   $$:	  $$.   -	,d$$`	   '
+			echo '	   $$;	  Y$b._   _,d$P`		 '
+			echo '	   Y$$.	 .`$Y$$$$P$`			'
+			echo '	   `$$b	  $-.__				 '
+			echo '		`Y$$b						  '
+			echo '		 `Y$$.						 '
+			echo '		   `$$b.					   '
+			echo '			 `Y$$b.					'
+			echo '			   `$Y$b._				 '
+			echo '				   `$$$$			   '
+			echo '									   '
+			;;
+		*)
+			echo '											'
+			echo '				 .88888888:.				'
+			echo '				88888888.88888.			 '
+			echo '			  .8888888888888888.			'
+			echo '			  888888888888888888			'
+			echo '			  88| _`88|_  `88888			'
+			echo '			  88 88 88 88  88888			'
+			echo '			  88_88_::_88_:88888			'
+			echo '			  88:::,::,:::::8888			'
+			echo '			  88`:::::::::``8888			'
+			echo '			 .88  `::::`	8:88.		   '
+			echo '			8888			`8:888.		 '
+			echo '		  .8888`			 `888888.	   '
+			echo '		 .8888:..  .::.  ...:`8888888:.	 '
+			echo '		.8888.|	 :|	 `|::`88:88888	'
+			echo '	   .8888		`		 `.888:8888.   '
+			echo '	  888:8		 .		   888:88888   '
+			echo '	.888:88		.:		   888:88888:  '
+			echo '	8888888.	   ::		   88:888888   '
+			echo '	`.::.888.	  ::		  .88888888	'
+			echo '   .::::::.888.	::		 :::`8888`.:.  '
+			echo '  ::::::::::.888   |		 .::::::::::::  '
+			echo '  ::::::::::::.8	|	  .:8::::::::::::. '
+			echo ' .::::::::::::::.		.:888::::::::::::: '
+			echo ' :::::::::::::::88:.__..:88888:::::::::::`  '
+			echo '  ``.:::::::::::88888888888.88:::::::::`	'
+			echo '		``:::_:` -- `` -`-` ``:_::::``	  '
+			echo '											'
+			;;
+	esac
+}
+
+# Take a screenshot and save it in the user's home directory.
+function print_screenshot
+{
+	echo "	Screenshot being taken.....$(tput bold)$(tput setaf 4)Smile!!$(tput sgr0)"
+	echo
+	import -window root "$HOME/Screenshot_$(/bin/date +%Y%m%d.%H%M).png"
+	echo "	Screenshot Saved as $HOME/Screenshot_$(/bin/date +%Y%m%d.%H%M).png"
+}
+
+# Collect release information.
+function get_release
+{
+	os=$(cat /etc/*-release | grep "^PRETTY_NAME=" | sed -r 's/PRETTY_NAME="?([^"]+)"?/\1/')
+	[ -z "$os" ] && os='Not Found'
+	host=$(uname -n)
+	kernel=$(uname -r)
+}
+
+# Save the uptime at the time this function is executed.
+function get_uptime
+{
+	# Since uptime changes constantly, save it before parsing so the output is consistent.
+	current_uptime="$(uptime)"
+	# Parse the uptime snapshot.
+	days=$(echo $current_uptime | awk '{print $3}' | sed 's/,//g')
+	if [ "$days" = 1 ]; then
+		day_label='day'
+	else
+		day_label='days'
+	fi
+	hours=$(echo $current_uptime | awk '{print $5}' | sed 's/,//g')
+	if [ "$hours" = 1 ]; then
+		hour_label='hour'
+	else
+		hour_label='hours'
+	fi
+	label=$(echo $current_uptime | awk '{print $4}')
+}
+
+# Collect generic system statistics.
+function get_system_stats
+{
+	totalram=$(awk '/MemTotal/{print $2}' /proc/meminfo)
+	ram=$((totalram/1024))
+	user=$(whoami)
+	res=$(xdpyinfo | grep dimensions | awk {'print $2'})
+	load=$(uptime | awk -F 'load average:' '{ print $2 }')
+	# AFAIK there is no standard identification strings between CPU architectures.
+	case $(arch) in
+		x86_64|i386|i486|i586|i686)
+			cpu="$(cat /proc/cpuinfo | grep 'model name' | head -n 1 | cut -d ':' -f 2-)"
+			;;
+		ppc)
+			cpu="$(cat /proc/cpuinfo | grep -E '^cpu' | head -n 1 | cut -d ':' -f 2-)"
+			cpu="${cpu}   @$(cat /proc/cpuinfo | grep -E '^clock' | head -n 1 | cut -d ':' -f 2-)"
+			;;
+		arm*)
+			cpu=$(cat /proc/cpuinfo | grep 'Processor' | head -n 1 | cut -d ':' -f 2-)
+			;;
+		*)
+			cpu='Unknown'
+			;;
+	esac
+}
+
+# Determine which desktop environment the user is running.
+function get_desktop_environment
+{
+	# $DESKTOP_SESSION in an UNRELIABLE method for determining which
+	# desktop environment is running. It is tied to the display manager,
+	# not the desktop environment itself. It is useful, though, when it
+	# is set.
+	if [ -z "$DESKTOP_SESSION" ]; then
+		if [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}kdeinit')" ]; then
+			DESKTOP_SESSION='kde-plasma'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}cinnamon')" ]; then
+			DESKTOP_SESSION='cinnamon'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}unity')" ]; then
+			DESKTOP_SESSION='unity'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}gnome-session')" ]; then
+			DESKTOP_SESSION='gnome'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}lxsession')" ]; then
+			DESKTOP_SESSION='LXDE'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}xfce.*-session')" ]; then
+			DESKTOP_SESSION='xfce'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}mate-session')" ]; then
+			DESKTOP_SESSION='mate'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}openbox')" ]; then
+			DESKTOP_SESSION='openbox'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}fluxbox')" ]; then
+			DESKTOP_SESSION='fluxbox'
+		fi
+	fi
+
+	if [ -n "$KDE_FULL_SESSION" ]; then
+		de='KDE'
+		ver=$(kde-open -v | awk '/Platform/ {print $4}')
+	elif [ "$DESKTOP_SESSION" == 'cinnamon' ]; then
+		de='Cinnamon'
+		ver=$(cinnamon --version | cut -d ' ' -f 2)
+	elif [ "$DESKTOP_SESSION" == 'ubuntu' ]; then
+		de='Unity'
+		ver=$(unity --version | cut -d ' ' -f 2)
+	elif [ -n "$GNOME_DESKTOP_SESSION_ID" ]; then
+		de='GNOME'
+		ver=$(gnome-session --version | awk {'print $2'})
+	elif [ "$DESKTOP_SESSION" == 'LXDE' ]; then
+		de='LXDE'
+		ver=$(lxpanel --version | cut -d ' ' -f 2)
+	elif [ "$DESKTOP_SESSION" == 'xfce' ]; then
+		de='XFCE'
+		ver=$(xfce4-session --version | head -n 1 | cut -d ' ' -f 2)
+	elif [ "$DESKTOP_SESSION" == 'mate' ]; then
+		de='Mate'
+		ver=$(mate-session --version | cut -d ' ' -f 2)
+	elif [ "$DESKTOP_SESSION" == 'openbox' ]; then
+		de='Openbox'
+		ver=$(openbox --version | head -n 1 | cut -d ' ' -f 2)
+	elif [ "$DESKTOP_SESSION" == 'fluxbox' ]; then
+		de='Fluxbox'
+		ver=$(fluxbox -version | head -n 1 | cut -d ' ' -f 2)
+	else
+		de='Not Found'
+	fi
+}
+
+########################################################################
+#								 Main								 #
+########################################################################

+clear

-
-
-if [ "$days" = 1 ]; then
-day_label='day'
-else
-day_label='days'
-fi
-
-#format labels
-if [ $hours = 1 ]; then
-hour_label='hour'
-else
-hour_label='hours'
-fi
-
-#format output
+get_release
+get_uptime
+get_system_stats
+get_desktop_environment
+
+echo
+print_logo
+echo
+echo "	$(tput bold)$(tput setaf 4)OS:$(tput sgr0) $os"
+echo "	$(tput bold)$(tput setaf 4)Hostname:$(tput sgr0) $host"
if [ "$label" = 'min,' ]; then
-echo "	$(tput bold)$(tput setaf 4)Uptime:$(tput sgr0) "$days "minutes"
+	echo "	$(tput bold)$(tput setaf 4)Uptime:$(tput sgr0) $days minutes"
elif [[ "$label" = 'day,' || "$label" = 'days,' ]]; then
-echo "	$(tput bold)$(tput setaf 4)Uptime:$(tput sgr0) "$days $day_label, $hours $hour_label
+	echo "	$(tput bold)$(tput setaf 4)Uptime:$(tput sgr0) $days $day_label, $hours $hour_label"
elif [ "$label" = '2' ]; then
-echo "	$(tput bold)$(tput setaf 4)Uptime:$(tput sgr0) "$days "hours"
-fi
-
-
-if [ x"$KDE_FULL_SESSION" = x"true" ]; then
-	DE='KDE'
-	ver=$(kde-open -v | awk '/Platform/ {print $4}')
-elif [ "$DESKTOP_SESSION" = 'cinnamon' ]; then
-	DE='Cinnamon'
-elif [ "$DESKTOP_SESSION" = 'unity' ]; then
-	DE='Unity'
-elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then
-	DE='GNOME'
-	ver=$(gnome-session --version | awk {'print $2'})
-elif [ "$DESKTOP_SESSION" = 'LXDE' ]; then
-	DE='LXDE'
-elif xprop -root _DT_SAVE_MODE | grep -qs ' = \"xfce4\"$'; then
-	DE='XFCE'
-elif [ "$DESKTOP_SESSION" = 'mate' ]; then
-	DE='Mate'
-elif [ "$DESKTOP_SESSION" = 'openbox' ]; then
-	DE='Openbox'
-
-else
-	DE='Not Found'
+	echo "	$(tput bold)$(tput setaf 4)Uptime:$(tput sgr0) $days hours"
fi
-echo "	$(tput bold)$(tput setaf 4)CPU:$(tput sgr0)" $cpu
-echo "	$(tput bold)$(tput setaf 4)Total RAM:$(tput sgr0)" $ram "$(tput bold)$(tput setaf 4)Mb$(tput sgr0)"
-echo "	$(tput bold)$(tput setaf 4)Desktop Enviroment:$(tput sgr0)" $DE $ver
-echo "	$(tput bold)$(tput setaf 4)Logged in as:$(tput sgr0)" $user
-echo "	$(tput bold)$(tput setaf 4)Kernel:$(tput sgr0)" $kernel
-echo "	$(tput bold)$(tput setaf 4)Resolution:$(tput sgr0)" $res "$(tput bold)$(tput setaf 4)pixels$(tput sgr0)"
-echo "	$(tput bold)$(tput setaf 4)Load Averages:$(tput sgr0)" $load
-echo ""
-echo ""
-#echo "	Screenshot being taken.....$(tput bold)$(tput setaf 4)Smile!!$(tput sgr0) (Disabled)"
-#echo ""
-# import -window root $HOME/Screenshot_$(/bin/date +%Y%m%d.%H%M).png
-# echo "Screenshot Saved as " $HOME/Screenshot_$(/bin/date +%Y%m%d.%H%M).png
+echo "	$(tput bold)$(tput setaf 4)CPU:$(tput sgr0)$cpu"
+echo "	$(tput bold)$(tput setaf 4)Total RAM:$(tput sgr0) $ram $(tput bold)$(tput setaf 4)Mb$(tput sgr0)"
+echo "	$(tput bold)$(tput setaf 4)Desktop Enviroment:$(tput sgr0) $de $ver"
+echo "	$(tput bold)$(tput setaf 4)Logged in as:$(tput sgr0) $user"
+echo "	$(tput bold)$(tput setaf 4)Kernel:$(tput sgr0) $kernel"
+echo "	$(tput bold)$(tput setaf 4)Resolution:$(tput sgr0) $res $(tput bold)$(tput setaf 4)pixels$(tput sgr0)"
+echo "	$(tput bold)$(tput setaf 4)Load Averages:$(tput sgr0)$load"
+echo
+echo
+# print_screenshot
+# echo
+# echo

The output of the script on my laptop looks something like this (the logo looks a little messed up because its not in a monospaced font):



			  _,met$$$$$gg.		  
		   ,g$$$$$$$$$$$$$$$P.	  
		 ,g$$P$$	   $$$Y$$.$.	
		,$$P`			  `$$$.	
	   ,$$P	   ,ggs.	 `$$b:	
	   d$$`	 ,$P$`   .	$$$	
	   $$P	  d$`	 ,	$$P	
	   $$:	  $$.   -	,d$$`	
	   $$;	  Y$b._   _,d$P`	  
	   Y$$.	 .`$Y$$$$P$`		  
	   `$$b	  $-.__			  
		`Y$$b						
		 `Y$$.					  
		   `$$b.					
			 `Y$$b.				  
			   `$Y$b._			  
				   `$$$$			
									
	OS: Debian GNU/Linux wheezy/sid
	Hostname: ZIPPYZEBRA
	CPU: 7447A, altivec supported   @ 1499.999000MHz
	Total RAM: 1007 Mb
	Desktop Enviroment: Openbox 3.5.0
	Logged in as: xorangekiller
	Kernel: 3.2.0-4-powerpc
	Resolution: 1280x854 pixels
	Load Averages: 1.41, 0.75, 0.54


Attached Files




#62 OP Haggis

    Resident Elite

  • 1,344 posts
  • Joined: 13-June 07
  • Location: Near Stirling, Scotland
  • OS: Debian 7
  • Phone: Samsung Galaxy S3 LTE (i9305)

Posted 06 December 2012 - 09:41

cool i will have a look at this later

i really need to learn how to regex properly

i.e.
grep -E '([/][A-Za-z]+)*[/]{0,1}kdeinit')


#63 OP Haggis

    Resident Elite

  • 1,344 posts
  • Joined: 13-June 07
  • Location: Near Stirling, Scotland
  • OS: Debian 7
  • Phone: Samsung Galaxy S3 LTE (i9305)

Posted 06 December 2012 - 11:50

might add a refresh function in there too so if you run the script using

./stats.sh -r

then it will run and refresh the info every 5 seconds or so

#64 xorangekiller

    Delightfully Insane

  • 726 posts
  • Joined: 24-January 09
  • Location: Virginia, USA
  • OS: Debian Wheezy

Posted 06 December 2012 - 16:03

View PostHaggis, on 06 December 2012 - 09:41, said:

cool i will have a look at this later

i really need to learn how to regex properly

i.e.
grep -E '([/][A-Za-z]+)*[/]{0,1}kdeinit')

Regular expressions are very useful. The one you quoted is checking for any string containing kdeinit with an optional absolute path in front of it. Although regex is slightly different between the various tools/languages that implement it, it is mostly the same. My favourite regex reference page is here, but you should really read the grep man page for the specific implementation in grep.

PS: You are welcome to use the patched script I posted above as-is. I assigned copyright to you.

#65 OP Haggis

    Resident Elite

  • 1,344 posts
  • Joined: 13-June 07
  • Location: Near Stirling, Scotland
  • OS: Debian 7
  • Phone: Samsung Galaxy S3 LTE (i9305)

Posted 06 December 2012 - 16:35

Thanks

i will be adding credits type thing in for all the help you guys have given me while this makes its way to a public release

i am working on Top processes now

really enjoying doing this

#66 xorangekiller

    Delightfully Insane

  • 726 posts
  • Joined: 24-January 09
  • Location: Virginia, USA
  • OS: Debian Wheezy

Posted 06 December 2012 - 18:57

I noticed a couple posts up that you are considering adding command line switches to control the script's behavior. A good way to accept switches in basically any order or combination in BASH can be done using a switch case like in the code snippet below.

# Parse the given arguments.
while [ $# -gt 1 ]; do
	case $1 in
		--noverify)
			noverify=1
			;;
		--format)
			format=1
			;;
		--verbose|-v)
			verbose=1
			;;
		--help)
			usage
			exit 0
			;;
		*)
			echo "Invalid Argument -- $1"
			usage
			exit 1
			;;
	esac
	shift
done

# Get the action to take.
action="$1"
[ -z "$action" ] && action='default'

# Execute the function associated with that action.
eval $action

If you don't want to use an eval system or have any required arguments, check that $# is greater than 0 instead of 1 and don't use any of the code I posted after the loop exits. I hope that helps a little; I know I had trouble writing a good argument parser when I first started with BASH.

#67 OP Haggis

    Resident Elite

  • 1,344 posts
  • Joined: 13-June 07
  • Location: Near Stirling, Scotland
  • OS: Debian 7
  • Phone: Samsung Galaxy S3 LTE (i9305)

Posted 10 December 2012 - 15:08

Updated :)

Posted Image

#68 +ViperAFK

    Neowinian ULTRAKILL

  • 10,283 posts
  • Joined: 07-March 06
  • Location: Vermont

Posted 09 March 2013 - 19:25

where can I download the latest version?

#69 OP Haggis

    Resident Elite

  • 1,344 posts
  • Joined: 13-June 07
  • Location: Near Stirling, Scotland
  • OS: Debian 7
  • Phone: Samsung Galaxy S3 LTE (i9305)

Posted 09 March 2013 - 21:02

can get it here

disabled the logos until i can get it working right on 64bit

you can enable them by removing the # next to print_logo lol

http://haggistech.co...ats-V1.1.tar.gz