diff --git a/19-sysinfo b/19-sysinfo new file mode 100755 index 0000000..02856bc --- /dev/null +++ b/19-sysinfo @@ -0,0 +1,28 @@ +#!/bin/bash + +# get processor name +cpu_info=$(cat /proc/cpuinfo) +cpu_model="$(echo "$cpu_info" | grep "model name" | sort -u | cut -d ':' -f 2)" +cpu_model=$(echo "$cpu_model" | sed -e "s/(R)//g" -e "s/(TM)//g" -e "s/ CPU//" -e "s/ Processor//" -e "s/ / /" -e "s/^ //g") +cpu_model=$(echo "$cpu_model" | sed "s/ with Radeon Graphics//") +cpu_model=$(echo "$cpu_model" | cut -d '@' -f 1) + + +distro=$(cat /etc/*release | grep "PRETTY_NAME" | cut -d "=" -f 2- | sed 's/"//g') +_uptime=$(uptime -p | awk '{printf("%s %s %s %s\n", $2, $3, $4, $5); }' | sed 's/,//g') +# get processes +PROCESS=`ps -eo user=|sort|uniq -c | awk '{ print $2 " " $1 }'` +PROCESS_ALL=`echo "$PROCESS"| awk {'print $2'} | awk '{ SUM += $1} END { print SUM }'` +PROCESS_ROOT=`echo "$PROCESS"| grep root | awk {'print $2'}` +PROCESS_USER=`echo "$PROCESS"| grep -v root | awk {'print $2'} | awk '{ SUM += $1} END { print SUM }'` + +W="\e[0;39m" +G="\e[1;33m" + +printf "\n${W}System info:\n" +printf "$W Uptime.: $_uptime\n" +printf "$W Distro.: $distro\n" +printf "$W Kernel.: `uname -sr`\n" +printf "$W Proc...: $G$PROCESS_ROOT$W (r), $G$PROCESS_USER$W (u) | $G$PROCESS_ALL$W (t)\n" +printf "$W CPU....: %s\n" "$cpu_model" + \ No newline at end of file diff --git a/20-memory b/20-memory new file mode 100755 index 0000000..f795e6f --- /dev/null +++ b/20-memory @@ -0,0 +1,38 @@ +#!/bin/bash + +mapfile -t mem < <( free --mega) + +IFS=$'\n' mem=($(sort <<<"${mem[*]}" | tail -n +2)) +unset IFS + +barWidth=38 +clear="\e[39m\e[0m" +usageColor="\e[33m" +buffColor="\e[36m" + +printf '\nMemory:\n' + +for point in "${mem[@]}"; do + # printf "$point" + IFS=" " read TYPE USED TOTAL CACHE <<<$(echo "${point}" | awk {'print $1,$3,$2,$6'} | sed 's/://') + CACHE=$((CACHE+0)) + usedBarWidth=$((barWidth*USED/TOTAL)) + cachedBarWidth=$((barWidth*CACHE/TOTAL)) + barContent="${usageColor}" + for sep in $(seq 1 $usedBarWidth); do + barContent="${barContent}―" + done + barContent="${barContent}${buffColor}" + for sep in $(seq 1 $cachedBarWidth); do + barContent="${barContent}―" + done + barContent="${barContent}${clear}" + for sep in $(seq 1 $(($barWidth-$usedBarWidth-$cachedBarWidth))); do + barContent="${barContent}―" + done + bar="${barContent}${clear}" + printf " %-4s used ${usageColor}%2s${clear} Gi cache ${buffColor}%3s${clear} Gi of %3s Gi\n" "$TYPE" "$(($USED/1024))" "$(($CACHE/1024))" "$(($TOTAL/1024))" + + echo -e " ${bar}" + +done diff --git a/20-sysinfo b/20-sysinfo deleted file mode 100755 index 070e01b..0000000 --- a/20-sysinfo +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# get free memory -IFS=" " read USED FREE TOTAL <<<$(free -htm | grep "Mem" | awk {'print $3,$4,$2'}) -ISF2=" " read USEDSW FREESW TOTALSW <<<$(free -htm | grep "Swap" | awk {'print $3,$4,$2'}) -# get processes -PROCESS=`ps -eo user=|sort|uniq -c | awk '{ print $2 " " $1 }'` -PROCESS_ALL=`echo "$PROCESS"| awk {'print $2'} | awk '{ SUM += $1} END { print SUM }'` -PROCESS_ROOT=`echo "$PROCESS"| grep root | awk {'print $2'}` -PROCESS_USER=`echo "$PROCESS"| grep -v root | awk {'print $2'} | awk '{ SUM += $1} END { print SUM }'` - -W="\e[0;39m" -G="\e[1;33m" - -echo -e " -${W}system info: -$W Uptime.: $W`uptime -p | awk '{if ($1 != "test") printf("%s %s %s %s\n", $2, $3, $4, $5); }' | sed 's/,//g'` -$W Distro.: $W`cat /etc/*release | grep "PRETTY_NAME" | cut -d "=" -f 2- | sed 's/"//g'` -$W Kernel.: $W`uname -sr` -$W Proc...: $W$G$PROCESS_ROOT$W (r), $G$PROCESS_USER$W (u) | $G$PROCESS_ALL$W (t) -$W CPU....:$W`cat /proc/cpuinfo | grep "name" | cut -d : -f2 | uniq | cut -f1 -d"@" | sed 's/(TM)//;s/(R)//;s/CPU//'` -$W Memory.: $G$USED$W used | $G$TOTAL$W in total$W -$W Swap...: $G$USEDSW$W used | $G$TOTALSW$W in total$W" diff --git a/30-hdd-free b/30-hdd-free index d4a399c..f735658 100755 --- a/30-hdd-free +++ b/30-hdd-free @@ -1,12 +1,10 @@ #!/bin/bash -# mountpoints=$(echo df -h | grep ^/dev/ | grep -v efi | awk '{print $1;}') mapfile -t mountpoints < <( df -h | grep ^/dev/ | grep -v efi | awk '{print $6;}' ) - IFS=$'\n' mountpoints=($(sort <<<"${mountpoints[*]}")) unset IFS -barWidth=40 +barWidth=38 maxDiscUsage=85 midDiscUsage=45 clear="\e[39m\e[0m" @@ -30,14 +28,14 @@ for point in "${mountpoints[@]}"; do fi barContent="${color}" for sep in $(seq 1 $usedBarWidth); do - barContent="${barContent}▄" + barContent="${barContent}―" done - barContent="${barContent}${clear}${dim}" + barContent="${barContent}${clear}" for sep in $(seq 1 $(($barWidth-$usedBarWidth))); do - barContent="${barContent}▄" + barContent="${barContent}―" done bar=" ${barContent}${clear}" - echo "${point}" | awk '{printf(" %-14s", $1); }' + echo "${point}" | awk '{printf(" %-12s", $1); }' echo "${line}" | awk '{if ($1 != "Filesystem") printf("%+8s used out of %+5s\n", $3, $2); }' echo -e "${bar}" diff --git a/30-hdd-temp b/30-hdd-temp index cd247cb..5bc72f8 100755 --- a/30-hdd-temp +++ b/30-hdd-temp @@ -1,16 +1,16 @@ #!/bin/bash -disks=${disks:-()} + +mapfile -t disks < <( ls /dev/sd[a-z] ) out="" dim="\e[43m" -white="\e[31m" label="\e[1;30m" COLUMNS=3 clear="\e[0m\e[39m" my_target_temp=45 -k=0 -for i in {a..z}; do - temp=$(smartctl -a /dev/sd${i} | grep Temperature_Celsius | grep 194 | awk '{print $10}' 2> /dev/null) +k=0 +for i in ${disks[@]}; do + temp=$(smartctl -a ${i} | grep Temperature_Celsius | grep 194 | awk '{print $10}' 2> /dev/null) color="\e[42m" ((k++)) if [ -z "$temp" ]; then @@ -19,13 +19,13 @@ for i in {a..z}; do if [ "$temp" -ge "${my_target_temp}" ]; then color="\e[41m" fi - out+="${dim}${white}${label} sd${i} \e[30m$color $temp $clear," + + out+="$(printf "${dim}${label} %s \e[30m$color %-17s," "$(echo ${i} | sed -e 's/\/dev\///')" "$temp $clear")" if [ $(($k % $COLUMNS)) -eq 0 ]; then out+="\n" fi fi done out+="\n" -echo -echo -e "HDD Temps:" -printf "$out" | column -c $k -ts $',' | sed -e 's/^/ /' +printf "\n HDD Temps:\n" +printf "$out" | column -c $k -ts $',' | sed -e 's/^/ /' diff --git a/40-services b/40-services index 718f7f7..cd18d5a 100755 --- a/40-services +++ b/40-services @@ -9,35 +9,41 @@ red="\e[1;31m" undim="\e[0m" declare -A services services["docker"]="Docker" -#services["openvpn-server@server"]="OVPN server" -#services["openvpn-server@private"]="OVPN private" -services["smbd"]="Samba" services["smartd"]="Smart" -# services["minecraft@iis"]="MC IIS" -# services["minecraft@iis_creative"]="IIS CREATIVE" -#services["lavalink"]="Lavalink" -#services["discord-music"]="Dis music" -#services["discord-pisya"]="Dis pisya" -#services["discord-boom"]="Dis boom" +services["smbd"]="Samba" +services["nmbd"]="NetBIOS" services["wsdd"]="WSD" -# sort services +services["isc-dhcp-relay"]="DHCP Relay" + + +# Sorting associated array +names=$( +for name in ${!services[@]}; do + echo "${services[$name]}:::$name" +done | sort | awk -F::: '{print $2}' +) + k=0 out="" -for i in "${!services[@]}"; do - ((k++)) +for name in $names; do + VAL=${services[$name]} + ((k++)) # color green if service is active, else red - service_status=($(systemctl is-active "$i")) + service_status=($(systemctl is-active "$name")) if [[ "${service_status}" == "active" ]]; then - out+="${services[$i]}:,${green} up${undim}," + _tmp=$(printf "%-13s %-16s," "${services[$name]}:" "${green}up${undim}") + out+="${_tmp}," else - out+="${services[$i]}:,${red}down${undim}," + _tmp=$(printf "%-13s %-16s," "${services[$name]}:" "${red}down${undim}") + out+="${_tmp}," fi # insert \n every $COLUMNS column if [ $((($k) % $COLUMNS)) -eq 0 ]; then out+="\n" fi done + out+="\n" -printf "\nservices:\n" +printf "\nServices:\n" printf "$out" | column -ts $',' | sed -e 's/^/ /' diff --git a/60-docker b/60-docker index 02a23cd..475aa09 100755 --- a/60-docker +++ b/60-docker @@ -10,73 +10,55 @@ yellow="\e[1;33m" undim="\e[0m" docker_format='docker ps --format "{{.Names}} {{.Status}}" -a' -game_label='eval "$docker_format" --filter "label=game_server" -a | sort' +game_label='eval "$docker_format" --filter "label=game_server"' +traker='eval "$docker_format" --filter "label=traker"' +combined='(eval "$docker_format" --filter "label=traker" && eval "$docker_format" --filter "label=game_server") | sort' +mapfile -t containers < <( comm -2 -3 <( eval "$docker_format" | sort) <( eval "$combined") | sed '/^\s*$/d' | tail -n +1) +mapfile -t game_servers < <( eval "$game_label" | sort | sed '/^\s*$/d'| tail -n +1) +mapfile -t trakers < <( eval "$traker" | sort | sed '/^\s*$/d'| tail -n +1) -mapfile -t containers < <( comm -2 -3 <( eval "$docker_format" | sort) <(eval "$game_label") | sed '/^\s*$/d' | tail -n +1) -mapfile -t game_servers < <( eval "$game_label" | sed '/^\s*$/d'| tail -n +1) +check_status() { + IFS=" " read name status <<< $1 + replica=$( echo ${name} | sed 's/\([^.]*\)\.\([^.]*\)\.\([^.]*\)/\2/') + name=$( echo ${name} | sed 's/\([^.]*\)\.\([^.]*\)\.\([^.]*\)/\1/') + if [[ "${status}" == *"healthy"* ]]; then + _status="${green}healthy${undim}" + + elif [[ "${status}" == *"Restarting"* ]]; then + _status="${yellow}restarting${undim}" + + elif [[ "${status}" == *"Paused"* ]]; then + _status="${yellow}paused${undim}" + + elif [[ "${status}" == *"Up"* ]]; then + _status="${green}up${undim}" + + elif [[ "${status}" == *"Created"* ]]; then + _status="${yellow}created${undim}" + + elif [[ "${status}" == *"Exited"* ]]; then + _status="${red}exited${undim}" + + fi + + _line=${name},${_status} + echo -e "${name} ${_status}" | awk '{printf(" %-20s %+20s\n", $1, $2); }' +} printf "\nDocker status:\n Game Servers:\n" for i in "${!game_servers[@]}"; do - IFS2=" " read name status <<< ${game_servers[i]} - replica=$( echo ${name} | sed 's/\([^.]*\)\.\([^.]*\)\.\([^.]*\)/\2/') - name=$( echo ${name} | sed 's/\([^.]*\)\.\([^.]*\)\.\([^.]*\)/\1/') + check_status "${game_servers[$i]}" +done - if [[ "${status}" == *"healthy"* ]]; then - _status="${green}healthy${undim}" - - elif [[ "${status}" == *"Restarting"* ]]; then - _status="${yellow}restarting${undim}" - - elif [[ "${status}" == *"Paused"* ]]; then - _status="${yellow}paused${undim}" - - elif [[ "${status}" == *"Up"* ]]; then - _status="${green}up${undim}" - - elif [[ "${status}" == *"Created"* ]]; then - _status="${yellow}created${undim}" - - elif [[ "${status}" == *"Exited"* ]]; then - - _status="${red}exited${undim}" - fi - - line=${name},${_status} - echo -e "${name} ${_status}" | awk '{printf(" %-20s %+25s\n", $1, $2); }' +printf "\n Tracker:\n" +for i in "${!trakers[@]}"; do + check_status "${trakers[$i]}" done printf "\n Other:\n" - for i in "${!containers[@]}"; do - IFS=" " read name status <<< ${containers[i]} - replica=$( echo ${name} | sed 's/\([^.]*\)\.\([^.]*\)\.\([^.]*\)/\2/') - name=$( echo ${name} | sed 's/\([^.]*\)\.\([^.]*\)\.\([^.]*\)/\1/') - - - if [[ "${status}" == *"healthy"* ]]; then - _status="${green}healthy${undim}" - - elif [[ "${status}" == *"Restarting"* ]]; then - _status="${yellow}restarting${undim}" - - elif [[ "${status}" == *"Paused"* ]]; then - _status="${yellow}paused${undim}" - - elif [[ "${status}" == *"Up"* ]]; then - _status="${green}up${undim}" - - elif [[ "${status}" == *"Created"* ]]; then - _status="${yellow}created${undim}" - - elif [[ "${status}" == *"Exited"* ]]; then - - _status="${red}exited${undim}" - fi - line=${name},${_status} - echo -e "${name} ${_status}" | awk '{printf(" %-20s %+25s\n", $1, $2); }' - + check_status "${containers[$i]}" done printf "" -