Files
opendoor-base-install/motd/10-armbian-header.tpl

159 lines
6.0 KiB
Smarty
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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.
#
# BBox (bbox.wtf) — модифицированная версия баннера входа Armbian.
# ШАБЛОН. Плейсхолдеры __BBOX_VERSION__ и __BBOX_URL__ подставляются
# скриптами установки (init_system.sh / install_scripts.sh).
# НЕ РЕДАКТИРОВАТЬ напрямую на устройстве — правится в репозитории
# и заменяется при переустановке.
THIS_SCRIPT="header"
MOTD_DISABLE=""
HIDE_IP_PATTERN="^dummy0|^lo|^docker"
# Read image configuration
[[ -f /etc/armbian-image-release ]] && . /etc/armbian-image-release
VENDORTEMP="${VENDOR}"
# Read update configuration
[[ -f /etc/armbian-release ]] && . /etc/armbian-release
# Keep the VENDOR from image if its defined there
[[ -n "${VENDORTEMP}" && "${VENDORTEMP}" != "${VENDOR}" ]] && VENDOR="${VENDORTEMP}"
# If VENDORPRETTYNAME is defined, used that
[[ -n $VENDORPRETTYNAME ]] && VENDOR="$VENDORPRETTYNAME"
if [[ -f /etc/armbian-distribution-status ]]; then
. /etc/armbian-distribution-status
# Fina a way that works
[[ -f /etc/lsb-release ]] && DISTRIBUTION_CODENAME=$(grep CODENAME /etc/lsb-release | cut -d"=" -f2)
[[ -f /etc/lsb-release ]] && DISTRIBUTION_ID=$(grep DISTRIB_ID /etc/lsb-release | cut -d"=" -f2)
[[ -z "$DISTRIBUTION_CODENAME" && -f /etc/os-release ]] && DISTRIBUTION_CODENAME=$(grep VERSION_CODENAME /etc/os-release | cut -d"=" -f2)
[[ -z "$DISTRIBUTION_ID" && -f /etc/os-release ]] && DISTRIBUTION_ID=$(grep "^ID" /etc/os-release | cut -d"=" -f2)
[[ -z "$DISTRIBUTION_CODENAME" && -x /usr/bin/lsb_release ]] && DISTRIBUTION_CODENAME=$(/usr/bin/lsb_release -c | cut -d":" -f2 | tr -d "\t")
[[ -z "$DISTRIBUTION_ID" && -x /usr/bin/lsb_release ]] && DISTRIBUTION_ID=$(/usr/bin/lsb_release -i | cut -d":" -f2 | tr -d "\t")
# Read Armbian distribution status
DISTRIBUTION_STATUS=$(grep "^${DISTRIBUTION_CODENAME}" /etc/armbian-distribution-status | cut -d"=" -f2 | cut -d";" -f1)
# Read upgrade possibilities on stable channel
filter=$(grep "supported" /etc/armbian-distribution-status | cut -d"=" -f1)
upgrade=$(for j in $filter; do
for i in $(grep "^${DISTRIBUTION_CODENAME}" /etc/armbian-distribution-status | cut -d";" -f2 | cut -d"=" -f2 | sed "s/,/ /g"); do
if [[ $i == $j ]]; then
echo $i
fi
done
done | tail -1)
fi
[[ -f /etc/default/armbian-motd ]] && . /etc/default/armbian-motd
for f in $MOTD_DISABLE; do
[[ $f == $THIS_SCRIPT ]] && exit 0
done
function get_wan_address() {
curl --connect-timeout 2 -s http://whatismyip.akamai.com/
} # get wan ip address
function get_ip_addresses() {
local ips=()
for f in /sys/class/net/*; do
local intf=$(basename $f)
# match only interface names "dummy0" and "lo"
if [[ $intf =~ $HIDE_IP_PATTERN ]]; then
continue
else
local tmp=$(ip -4 addr show dev $intf | grep -v "$intf:avahi" | awk '/inet/ {print $2}' | cut -d'/' -f1 | uniq)
# add both name and IP - can be informative but becomes ugly with long persistent/predictable device names
#[[ -n $tmp ]] && ips+=("$intf: $tmp")
# add IP only
[[ -n $tmp ]] && ips+=("$tmp")
fi
done
echo "${ips[@]}"
} # get_ip_addresses
# Read Armbian kernel version
KERNELID=$(uname -r)
# Get other variables
ip_address=$(get_ip_addresses &)
wan_ip_address=$(get_wan_address &)
# Display software vendor logo
echo -e "\e[1;91m$(figlet -f small " BBox")\e[0m";
# Display version, board, and kernel version
[[ $VERSION == *trunk* ]] && VERSION=$(echo -e $VERSION | cut -d"." -f1-2 | sed "s/\$/ rolling/")
echo -e " \e[0;92mv__BBOX_VERSION__\x1B[0m __BBOX_URL__ on $BOARD_NAME running \e[0;92m${KERNELID^}\x1B[0m, built on Armbian Linux"
echo -e " \e[0;36mCreated by free people for a free world, in the name of privacy and security.\x1B[0m"
# render image and board type
if [[ "$IMAGE_TYPE" != "stable" ]]; then
[[ "$IMAGE_TYPE" == "user-built" ]] && HARDWARE_STATUS="\e[0;91mDIY\x1B[0m (custom image)\x1B[0m"
[[ "$IMAGE_TYPE" == "nightly" ]] && HARDWARE_STATUS="\e[0;91mfor advanced users\x1B[0m (rolling release)\x1B[0m"
else
[[ "$BOARD_TYPE" == "csc" || "$BOARD_TYPE" == "tvb" ]] && HARDWARE_STATUS="\e[0;91mDIY (community maintained)\x1B[0m"
[[ "$BOARD_TYPE" == "wip" ]] && HARDWARE_STATUS="\e[0;91mfor advanced users\x1B[0m (work in progress)\x1B[0m"
[[ "$BOARD_TYPE" == "eos" ]] && HARDWARE_STATUS="\e[0;91mend of life\x1B[0m"
fi
# render distribution status
if [[ $DISTRIBUTION_STATUS == supported ]]; then
DISTRO_STATUS="\e[0;92mstable\e[0m ($DISTRIBUTION_CODENAME)"
elif [[ $DISTRIBUTION_STATUS == eos ]]; then
DISTRO_STATUS="\e[0;91mend of life\e[0m ($DISTRIBUTION_CODENAME)"
else
DISTRO_STATUS="\e[0;93mrolling\e[0m ($DISTRIBUTION_CODENAME)"
fi
# read packages update status
NUM_UPDATES=0
NUM_UPDATES_ONHOLD=0
NUM_SECURITY_UPDATES=0
[[ -f /var/cache/apt/archives/updates.number ]] && . /var/cache/apt/archives/updates.number
if [[ $NUM_UPDATES -gt 0 ]]; then
if apt-mark showhold | grep -q linux-image 2>/dev/null; then
UPDATE_STATUS="Kernel upgrade \e[0;91mdisabled\e[0m"
else
UPDATE_STATUS="Kernel upgrade \e[0;92menabled\e[0m"
fi
UPDATE_STATUS+=" and \e[1;92m$NUM_UPDATES\e[0m package"
# Cosmetic is important
[[ $NUM_UPDATES -gt 1 ]] && UPDATE_STATUS+="s"
UPDATE_STATUS+=" available for upgrade\e[0m "
fi
echo ""
# Display packages status
if [[ -n $DISTRO_STATUS ]]; then
if [[ -n "${upgrade}" ]]; then
DISTRO_STATUS+=", possible distro upgrade ($upgrade)"
fi
echo -e " Packages: ${DISTRIBUTION_ID^} ${DISTRO_STATUS}"
fi
# Display available updates
if [[ -n $UPDATE_STATUS ]]; then
echo -e " Updates: $UPDATE_STATUS"
fi
# Display hardware support status
if [[ -n $HARDWARE_STATUS ]]; then
echo -e " Support: $HARDWARE_STATUS"
fi
echo -en " IP addresses: \x1B[93m(LAN)\x1B[0m \x1B[92m$ip_address\x1B[0m "
if [[ -n $wan_ip_address ]]; then
echo -e "\x1B[93m(WAN)\x1B[0m $wan_ip_address"
fi
echo ""