diff --git a/installer/02_bashboard.sh b/installer/02_bashboard.sh index cc87d04..72f5a93 100644 --- a/installer/02_bashboard.sh +++ b/installer/02_bashboard.sh @@ -8,176 +8,176 @@ ############################################ colorize() { - local value=$1 - local green_limit=$2 - local yellow_limit=$3 + local value=$1 + local green_limit=$2 + local yellow_limit=$3 - if [ "$value" -lt "$green_limit" ]; then - echo -e "${GREEN}${value}${NC}" - elif [ "$value" -lt "$yellow_limit" ]; then - echo -e "${YELLOW}${value}${NC}" - else - echo -e "${RED}${value}${NC}" - fi + if [ "$value" -lt "$green_limit" ]; then + echo -e "${GREEN}${value}${NC}" + elif [ "$value" -lt "$yellow_limit" ]; then + echo -e "${YELLOW}${value}${NC}" + else + echo -e "${RED}${value}${NC}" + fi } function dashboard_fast() { - #### CHANGABLE OPTIONS #### - ISTHISVM=0 # Change to 1 if this is a VM. This will remove the temperature bit. - MIN_CHECK_IP=30 # Change this value to set the timing cache for checking the public IP. - MIN_CHECK_UPDATE=120 # Change this value to set the timing cache for checking updates. - LOCAL_CACHE=1 # Change this value to 1 if you want to create the local cache in the ~/.bashrc.d/.dashboard_cache. - UI_SHOWS=1 # Change to 1 if cockpit has been installed. This will shows the IP and port Link. + #### CHANGABLE OPTIONS #### + ISTHISVM=0 # Change to 1 if this is a VM. This will remove the temperature bit. + MIN_CHECK_IP=30 # Change this value to set the timing cache for checking the public IP. + MIN_CHECK_UPDATE=120 # Change this value to set the timing cache for checking updates. + LOCAL_CACHE=1 # Change this value to 1 if you want to create the local cache in the ~/.bashrc.d/.dashboard_cache. + UI_SHOWS=1 # Change to 1 if cockpit has been installed. This will shows the IP and port Link. - #### Colors #### - GREEN="\e[32m" - YELLOW="\e[33m" - RED="\e[31m" - CYAN="\e[36m" - BOLD="\e[1m" - NC="\e[0m" # reset + #### Colors #### + GREEN="\e[32m" + YELLOW="\e[33m" + RED="\e[31m" + CYAN="\e[36m" + BOLD="\e[1m" + NC="\e[0m" # reset - #### Cache #### - if [ $LOCAL_CACHE -ne 1 ]; then - CACHE_DIR="/tmp/.dashboard_cache" - else - CACHE_DIR="/home/$(whoami)/.bashrc.d/.dashboard_cache" - fi - mkdir -p "$CACHE_DIR" - - #### Overview #### - echo -e "${CYAN}========================================${NC}" - echo -e "${BOLD} 🖥️ SYSTEM OVERVIEW${NC}" - echo -e "${CYAN}========================================${NC}" - - #### OS Informations Include #### - source /etc/os-release - - - #### OS info ### - echo -e "${CYAN}DISTRO:${NC} $PRETTY_NAME" - echo -e "${CYAN}ID:${NC} $ID" - echo -e "${CYAN}VERSION:${NC} $VERSION" - echo -e "${CYAN}URL:${NC} $HOME_URL" - echo -e "${CYAN}BUGS_URL:${NC} $BUG_REPORT_URL" - echo -e "${CYAN}========================================${NC}" - - #### Hostname #### - echo "📛 $(hostname)" - - - #### Local IP #### - LOCAL_IPS=$(hostname -I 2>/dev/null | xargs) - PRIMARY_IP=$(echo "$LOCAL_IPS" | awk '{print $1}') - - if [ -z "$LOCAL_IPS" ]; then - echo "🏠 Local IP: NOT AVAILABLE (no network?)" - echo "🌐 Web UI: NOT AVAILABLE" - else - echo "🏠 Local IP: $LOCAL_IPS" - echo "🌐 Web UI: http://$PRIMARY_IP:9090" - fi - - - #### Public IP #### - if [ -f "$CACHE_DIR/public_ip" ] && find "$CACHE_DIR/public_ip" -mmin -$MIN_CHECK_IP | grep -q .; then - PUBLIC_IP=$(cat "$CACHE_DIR/public_ip") - else - PUBLIC_IP=$(timeout 2 curl -s ifconfig.me 2>/dev/null) - if [ -n "$PUBLIC_IP" ]; then - echo "$PUBLIC_IP" > "$CACHE_DIR/public_ip" - fi - fi - - if [ -z "$PUBLIC_IP" ]; then - echo "🌍 Public IP: NOT AVAILABLE (no internet?)" - else - echo "🌍 Public IP: $PUBLIC_IP" - fi - #echo "" - echo -e "${CYAN} .................................. ${NC}" - - #### Cpu #### - LOAD=$(awk '{print $1}' /proc/loadavg) - CPU_PCT=$(awk -v l="$LOAD" -v n="$(nproc)" 'BEGIN {printf "%d", (l*100/n)}') - CPU_COLOR=$(colorize "$CPU_PCT" 50 80) - echo -e "🧠 CPU: ${CPU_COLOR}%" - - - #### Ram #### - read MEM_TOTAL MEM_USED <<< $(free -m | awk '/Mem:/ {print $2, $3}') - MEM_PCT=$((MEM_USED * 100 / MEM_TOTAL)) - MEM_COLOR=$(colorize "$MEM_PCT" 50 80) - echo -e "💾 RAM: ${MEM_COLOR}% (${MEM_USED}/${MEM_TOTAL}MB)" - - - - #### Diskspace #### - DISK_PCT=$(df / | awk 'NR==2 {gsub("%",""); print $5}') - DISK_COLOR=$(colorize "$DISK_PCT" 50 80) - DISK=$(df -h / | awk 'NR==2 {print $3 "/" $2}') - echo -e "📦 Disk: ${DISK} (${DISK_COLOR}%)" - - - - #### Uptime #### - echo "⏱️ Uptime: $(awk '{printf "%dd %dh %dm", $1/86400, ($1%86400)/3600, ($1%3600)/60}' /proc/uptime)" - - - #### Load Avarage #### - echo "📊 Load avg: $(awk '{print $1, $2, $3}' /proc/loadavg)" - - - - #### Updates #### - if command -v apt >/dev/null 2>&1; then - if [ -f "$CACHE_DIR/updates" ] && find "$CACHE_DIR/updates" -mmin -$MIN_CHECK_UPDATE | grep -q .; then - UPDATES=$(cat "$CACHE_DIR/updates") + #### Cache #### + if [ $LOCAL_CACHE -ne 1 ]; then + CACHE_DIR="/tmp/.dashboard_cache" else - UPDATES=$(apt list --upgradable 2>/dev/null | wc -l) - UPDATES=$((UPDATES - 1)) - echo "$UPDATES" > "$CACHE_DIR/updates" + CACHE_DIR="/home/$(whoami)/.bashrc.d/.dashboard_cache" fi + mkdir -p "$CACHE_DIR" - ## 🎨 Dinamic Color ## - if [ "$UPDATES" -eq 0 ]; then - UPD_COLOR="${GREEN}${UPDATES}${NC}" - elif [ "$UPDATES" -le 20 ]; then - UPD_COLOR="${YELLOW}${UPDATES}${NC}" + #### Overview #### + echo -e "${CYAN}========================================${NC}" + echo -e "${BOLD} 🖥️ SYSTEM OVERVIEW${NC}" + echo -e "${CYAN}========================================${NC}" + + #### OS Informations Include #### + source /etc/os-release + + + #### OS info ### + echo -e "${CYAN}DISTRO:${NC} $PRETTY_NAME" + echo -e "${CYAN}ID:${NC} $ID" + echo -e "${CYAN}VERSION:${NC} $VERSION" + echo -e "${CYAN}URL:${NC} $HOME_URL" + echo -e "${CYAN}BUGS_URL:${NC} $BUG_REPORT_URL" + echo -e "${CYAN}========================================${NC}" + + #### Hostname #### + echo "📛 $(hostname)" + + + #### Local IP #### + LOCAL_IPS=$(hostname -I 2>/dev/null | xargs) + PRIMARY_IP=$(echo "$LOCAL_IPS" | awk '{print $1}') + + if [ -z "$LOCAL_IPS" ]; then + echo "🏠 Local IP: NOT AVAILABLE (no network?)" + if [ $UI_SHOWS -eq 1 ]; then echo "🌐 Web UI: NOT AVAILABLE"; fi else - UPD_COLOR="${RED}${UPDATES}${NC}" + echo "🏠 Local IP: $LOCAL_IPS" + if [ $UI_SHOWS -eq 1 ]; then echo "🌐 Web UI: http://$PRIMARY_IP:9090"; fi fi - echo -e "📦 Updates: $UPD_COLOR" - else - echo "📦 Updates: N/A" - fi + + #### Public IP #### + if [ -f "$CACHE_DIR/public_ip" ] && find "$CACHE_DIR/public_ip" -mmin -$MIN_CHECK_IP | grep -q .; then + PUBLIC_IP=$(cat "$CACHE_DIR/public_ip") + else + PUBLIC_IP=$(timeout 2 curl -s ifconfig.me 2>/dev/null) + if [ -n "$PUBLIC_IP" ]; then + echo "$PUBLIC_IP" > "$CACHE_DIR/public_ip" + fi + fi + + if [ -z "$PUBLIC_IP" ]; then + echo "🌍 Public IP: NOT AVAILABLE (no internet?)" + else + echo "🌍 Public IP: $PUBLIC_IP" + fi + #echo "" + echo -e "${CYAN} .................................. ${NC}" + + #### Cpu #### + LOAD=$(awk '{print $1}' /proc/loadavg) + CPU_PCT=$(awk -v l="$LOAD" -v n="$(nproc)" 'BEGIN {printf "%d", (l*100/n)}') + CPU_COLOR=$(colorize "$CPU_PCT" 50 80) + echo -e "🧠 CPU: ${CPU_COLOR}%" + + + #### Ram #### + read MEM_TOTAL MEM_USED <<< $(free -m | awk '/Mem:/ {print $2, $3}') + MEM_PCT=$((MEM_USED * 100 / MEM_TOTAL)) + MEM_COLOR=$(colorize "$MEM_PCT" 50 80) + echo -e "💾 RAM: ${MEM_COLOR}% (${MEM_USED}/${MEM_TOTAL}MB)" - #### Temperature #### - if [ $ISTHISVM -ne 1 ]; then - if [ -f /sys/class/thermal/thermal_zone0/temp ]; then - TEMP_RAW=$(cat /sys/class/thermal/thermal_zone0/temp) - TEMP=$((TEMP_RAW/1000)) + #### Diskspace #### + DISK_PCT=$(df / | awk 'NR==2 {gsub("%",""); print $5}') + DISK_COLOR=$(colorize "$DISK_PCT" 50 80) + DISK=$(df -h / | awk 'NR==2 {print $3 "/" $2}') + echo -e "📦 Disk: ${DISK} (${DISK_COLOR}%)" - if [ "$TEMP" -lt 50 ]; then - TEMP_COLOR="${GREEN}${TEMP}°C${NC}" - elif [ "$TEMP" -lt 70 ]; then - TEMP_COLOR="${YELLOW}${TEMP}°C${NC}" + + + #### Uptime #### + echo "⏱️ Uptime: $(awk '{printf "%dd %dh %dm", $1/86400, ($1%86400)/3600, ($1%3600)/60}' /proc/uptime)" + + + #### Load Avarage #### + echo "📊 Load avg: $(awk '{print $1, $2, $3}' /proc/loadavg)" + + + + #### Updates #### + if command -v apt >/dev/null 2>&1; then + if [ -f "$CACHE_DIR/updates" ] && find "$CACHE_DIR/updates" -mmin -$MIN_CHECK_UPDATE | grep -q .; then + UPDATES=$(cat "$CACHE_DIR/updates") else - TEMP_COLOR="${RED}${TEMP}°C${NC}" + UPDATES=$(apt list --upgradable 2>/dev/null | wc -l) + UPDATES=$((UPDATES - 1)) + echo "$UPDATES" > "$CACHE_DIR/updates" fi - echo -e "🌡️ Temp: $TEMP_COLOR" - fi - fi + ## 🎨 Dinamic Color ## + if [ "$UPDATES" -eq 0 ]; then + UPD_COLOR="${GREEN}${UPDATES}${NC}" + elif [ "$UPDATES" -le 20 ]; then + UPD_COLOR="${YELLOW}${UPDATES}${NC}" + else + UPD_COLOR="${RED}${UPDATES}${NC}" + fi - echo -e "${CYAN}========================================${NC}" + echo -e "📦 Updates: $UPD_COLOR" + else + echo "📦 Updates: N/A" + fi + + + + #### Temperature #### + if [ $ISTHISVM -ne 1 ]; then + if [ -f /sys/class/thermal/thermal_zone0/temp ]; then + TEMP_RAW=$(cat /sys/class/thermal/thermal_zone0/temp) + TEMP=$((TEMP_RAW/1000)) + + if [ "$TEMP" -lt 50 ]; then + TEMP_COLOR="${GREEN}${TEMP}°C${NC}" + elif [ "$TEMP" -lt 70 ]; then + TEMP_COLOR="${YELLOW}${TEMP}°C${NC}" + else + TEMP_COLOR="${RED}${TEMP}°C${NC}" + fi + + echo -e "🌡️ Temp: $TEMP_COLOR" + fi + fi + + echo -e "${CYAN}========================================${NC}" }