Add motd.sh
This commit is contained in:
commit
f3ef58f0bc
105
motd.sh
Executable file
105
motd.sh
Executable file
@ -0,0 +1,105 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
### Time and date ###
|
||||||
|
echo -e "$(date)"
|
||||||
|
|
||||||
|
echo -e
|
||||||
|
|
||||||
|
|
||||||
|
### Hostname ###
|
||||||
|
echo -e "$(/usr/bin/env figlet "$(hostname)" | /usr/bin/env lolcat -f -F 0.05 -S 50)"
|
||||||
|
|
||||||
|
|
||||||
|
echo -e
|
||||||
|
|
||||||
|
|
||||||
|
### System info ###
|
||||||
|
echo -e "`cat /etc/*release | grep "PRETTY_NAME" | cut -d "=" -f 2- | sed 's/"//g'` | Kernel: `uname -r`
|
||||||
|
Uptime: `uptime -p | sed 's/up //'`"
|
||||||
|
|
||||||
|
|
||||||
|
### Services ###
|
||||||
|
# set column width
|
||||||
|
COLUMNS=1
|
||||||
|
# colors
|
||||||
|
green="\e[1;32m"
|
||||||
|
red="\e[1;31m"
|
||||||
|
undim="\e[0m"
|
||||||
|
|
||||||
|
services=("docker" "mariadb" "cronie")
|
||||||
|
# sort services
|
||||||
|
IFS=$'\n' services=($(sort <<<"${services[*]}"))
|
||||||
|
unset IFS
|
||||||
|
|
||||||
|
service_status=()
|
||||||
|
# get status of all services
|
||||||
|
for service in "${services[@]}"; do
|
||||||
|
service_status+=($(systemctl is-active "$service"))
|
||||||
|
done
|
||||||
|
|
||||||
|
out=""
|
||||||
|
for i in ${!services[@]}; do
|
||||||
|
# color green if service is active, else red
|
||||||
|
if [[ "${service_status[$i]}" == "active" ]]; then
|
||||||
|
out+="${services[$i]}:,${green}${service_status[$i]}${undim},"
|
||||||
|
else
|
||||||
|
out+="${services[$i]}:,${red}${service_status[$i]}${undim},"
|
||||||
|
fi
|
||||||
|
# insert \n every $COLUMNS column
|
||||||
|
if [ $((($i+1) % $COLUMNS)) -eq 0 ]; then
|
||||||
|
out+="\n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
out+="\n"
|
||||||
|
|
||||||
|
printf "\nServices:\n"
|
||||||
|
printf "$out" | column -ts $',' | sed -e 's/^/ /'
|
||||||
|
|
||||||
|
|
||||||
|
### Disk space ###
|
||||||
|
# config
|
||||||
|
max_usage=90
|
||||||
|
bar_width=50
|
||||||
|
# colors
|
||||||
|
white="\e[39m"
|
||||||
|
green="\e[1;32m"
|
||||||
|
red="\e[1;31m"
|
||||||
|
dim="\e[2m"
|
||||||
|
undim="\e[0m"
|
||||||
|
|
||||||
|
# disk usage: ignore zfs, squashfs & tmpfs
|
||||||
|
mapfile -t dfs < <(df -H -x zfs -x squashfs -x tmpfs -x devtmpfs --output=target,pcent,size | tail -n+2)
|
||||||
|
printf "\nDisk usage:\n"
|
||||||
|
|
||||||
|
for line in "${dfs[@]}"; do
|
||||||
|
# get disk usage
|
||||||
|
usage=$(echo "$line" | awk '{print $2}' | sed 's/%//')
|
||||||
|
used_width=$((($usage*$bar_width)/100))
|
||||||
|
# color is green if usage < max_usage, else red
|
||||||
|
if [ "${usage}" -ge "${max_usage}" ]; then
|
||||||
|
color=$red
|
||||||
|
else
|
||||||
|
color=$green
|
||||||
|
fi
|
||||||
|
# print green/red bar until used_width
|
||||||
|
bar="[${color}"
|
||||||
|
for ((i=0; i<$used_width; i++)); do
|
||||||
|
bar+="="
|
||||||
|
done
|
||||||
|
# print dimmmed bar until end
|
||||||
|
bar+="${white}${dim}"
|
||||||
|
for ((i=$used_width; i<$bar_width; i++)); do
|
||||||
|
bar+="="
|
||||||
|
done
|
||||||
|
bar+="${undim}]"
|
||||||
|
# print usage line & bar
|
||||||
|
echo "${line}" | awk '{ printf("%-31s%+3s used out of %+4s\n", $1, $2, $3); }' | sed -e 's/^/ /'
|
||||||
|
echo -e "${bar}" | sed -e 's/^/ /'
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
### Welcome message ###
|
||||||
|
LAST_LOGIN=$(last -w | grep arisu | head -2 | tail -1)
|
||||||
|
echo -e
|
||||||
|
echo -e "Welcome to $(hostname), $(whoami)!
|
||||||
|
Last login: $(echo "$LAST_LOGIN" | awk '{for(i=4;i<=NF;i++) print $i}' | paste -sd ' ') from $(echo "$LAST_LOGIN" | awk '{print $3}')"
|
Loading…
Reference in New Issue
Block a user