#!/bin/bash # # 10-sysinfo - generate the system information # Copyright (c) 2013 Nick Charlton # # Authors: Nick Charlton <hello@nickcharlton.net> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # define which hard drive you want to monitor storage=/dev/sda1 function display() { # $1=name $2=value $3=red_limit $4=minimal_show_limit $5=unit $6=after $7=acs/desc{ # battery red color is opposite, lower number if [[ "$1" == "Battery" ]]; then local great="<"; else local great=">"; fi if [[ -n "$2" && "$2" > "0" && (( "${2%.*}" -ge "$4" )) ]]; then printf "%-14s%s" "$1:" if awk "BEGIN{exit ! ($2 $great $3)}"; then echo -ne "\e[0;91m $2"; else echo -ne "\e[0;92m $2"; fi printf "%-1s%s\x1B[0m" "$5" printf "%-11s%s\t" "$6" return 1 fi } # display #function getboardtemp() { # if [ -f /etc/armbianmonitor/datasources/soctemp ]; then # read raw_temp /dev/null) # case ${amb_temp} in # *"find the USB device"*) # echo "" # ;; # *) # amb_temp=$(awk '{print $NF}' <<<$amb_temp | sed 's/C//g') # echo -n "scale=1;${amb_temp}/1" | grep -oE "\-?[[:digit:]]+.[[:digit:]]" # esac #} # ambienttemp function get_ip_addresses() { # return up to 2 IPv4 address(es) comma separated hostname -I | tr " " "\n" | \ grep "192.168." | \ tail -n2 | sed ':a;N;$!ba;s/\n/,/g' } # get_ip_addresses ip_address=$(get_ip_addresses &) ## storage #function storage_info() { # # storage info # RootInfo=$(df -h /) # root_usage=$(awk '/\// {print $(NF-1)}' <<<${RootInfo} | sed 's/%//g') # root_total=$(awk '/\// {print $(NF-4)}' <<<${RootInfo}) # StorageInfo=$(df -h $storage 2>/dev/null | grep $storage) # if [ -n "${StorageInfo}" ]; then # storage_usage=$(awk '/\// {print $(NF-1)}' <<<${StorageInfo} | sed 's/%//g') # storage_total=$(awk '/\// {print $(NF-4)}' <<<${StorageInfo}) # [[ "$storage" == */sd* ]] && hdd_temp=$(hddtemp -u C -nq $storage) # fi #} # storage_info #storage_info root_usage=`df -h / | awk '/\// {print $(NF-1)}'` ## System info date=`date` UptimeString=$(uptime | tr -d ',') time=$(awk -F" " '{print $3" "$4}' <<<"${UptimeString}") load="$(awk -F"average: " '{print $2}'<<<"${UptimeString}")" users="$(awk -F" user" '{print $1}'<<<"${UptimeString}")" critical_load=$(( 1 + $(grep -c processor /proc/cpuinfo) / 2 )) processes=`ps aux | wc -l` ## memory and swap mem_info=$(LANG=en_US.UTF-8 free -w 2>/dev/null | grep "^Mem" || LANG=en_US.UTF-8 free | grep "^Mem") memory_usage=$(awk '{printf("%.0f",(($2-($4+$6+$7))/$2) * 100)}' <<<${mem_info}) memory_total=$(awk '{printf("%d",$2/1024)}' <<<${mem_info}) swap_info=$(LANG=en_US.UTF-8 free -m | grep "^Swap") swap_usage=$( (awk '/Swap/ { printf("%3.0f", $3/$2*100) }' <<<${swap_info} 2>/dev/null || echo 0) | tr -c -d '[:digit:]') swap_total=$(awk '{print $(2)}' <<<${swap_info}) swap_usage=`free -m | awk '/Swap:/ { printf("%3.1f%%", $3/$2*100) }'` #batteryinfo #getboardtemp # DISPLAY echo "System information as of: $date" echo display "System load" "${load%% *}" "${critical_load}" "0" "" "${load#* }" printf "Up time: \x1B[92m%s\x1B[0m\t\t" "$time" echo "" # fixed newline display "Memory usage" "$memory_usage" "70" "0" " %" " of ${memory_total}MB" display "Swap usage" "$swap_usage" "10" "0" " %" " of ${swap_total}Mb" echo "" display "Usage of /" "$root_usage" "90" "1" "%" " of $root_total" printf "IP: " printf "\x1B[92m%s\x1B[0m" "$ip_address" echo "" display "Local users" "${users##* }" "3" "0" "" display "Processes" "${processes##* }" "150" "100" "" echo "" #a=0;b=0;c=0 #display "CPU temp" "$board_temp" "45" "0" "°C" "" ; a=$? #display "HDD temp" "$hdd_temp" "45" "0" "°C" "" ; b=$? #display "Ambient temp" "$amb_temp" "40" "0" "°C" "" ; c=$? #(( ($a+$b+$c) >0 )) && echo "" # new line only if some value is displayed