74 lines
2.0 KiB
Bash
Executable File
74 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright (c) Authors: https://www.armbian.com/authors
|
|
#
|
|
# This file is licensed under the terms of the GNU General Public
|
|
# License version 2. This program is licensed "as is" without any
|
|
# warranty of any kind, whether express or implied.
|
|
|
|
# DO NOT EDIT THIS FILE but add config options to /etc/default/armbian-motd
|
|
# any changes will be lost on board support package update
|
|
|
|
THIS_SCRIPT="commands"
|
|
MOTD_DISABLE=""
|
|
|
|
safe_source() { [[ -f "$1" ]] && . "$1"; }
|
|
|
|
# Optional overrides
|
|
safe_source /etc/default/armbian-motd
|
|
for f in ${MOTD_DISABLE}; do
|
|
[[ "${f}" == "${THIS_SCRIPT}" ]] && exit 0
|
|
done
|
|
|
|
_motd_spacer() {
|
|
local tag="${1:-after-header}"
|
|
local dir="/run/armbian-motd"; local stamp="$dir/.${tag}.printed"
|
|
mkdir -p "$dir" 2>/dev/null
|
|
[[ -e "$stamp" ]] || { echo ""; : > "$stamp"; }
|
|
}
|
|
|
|
# read upgrade count to show upgrade command
|
|
[[ -f /var/cache/apt/archives/updates.number ]] && . /var/cache/apt/archives/updates.number
|
|
|
|
# text, sudo / without, command, condition
|
|
# condition can be fairly complex
|
|
list=(
|
|
"Configuration","","armbian-config","true"
|
|
"Upgrade","","armbian-upgrade","[[ \"${NUM_UPDATES}\" -gt 0 ]]"
|
|
"Monitoring","","htop","true"
|
|
)
|
|
|
|
# verify if command exits on the system
|
|
cmd_count=0
|
|
name_len=0
|
|
output=()
|
|
for l in "${list[@]}"
|
|
do
|
|
IFS=',' read -r name sudo command condition <<< "$l"
|
|
if [[ "${condition}" == "true" ]] || eval "${condition}" 2> /dev/null; then
|
|
if command -v "${command}" &> /dev/null; then
|
|
# seek for maximum description length
|
|
if [[ ${#name} -ge ${name_len} ]]; then
|
|
name_len=${#name}
|
|
fi
|
|
cmd_count=$(( cmd_count + 1 ))
|
|
output+=("${name},${sudo},${command}")
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# show list for existing command only
|
|
if [[ "${cmd_count}" -gt 0 ]]; then
|
|
echo "" # ensure we start on a fresh line
|
|
printf "\e[0;90m Commands: \x1B[0m\n" #; printf '%.s─' $(seq 1 39); echo -e "\x1B[0m"
|
|
echo ""
|
|
for l in "${output[@]}"
|
|
do
|
|
IFS=',' read -r name _ command <<< "$l"
|
|
printf " \e[1;33m%-${name_len}s\e[0m: \e[0;92m%s\e[0m\n" "$name" "${command}"
|
|
done
|
|
echo -en "\033[0m"
|
|
fi
|
|
|
|
exit 0
|