mirror of
https://github.com/tteck/Proxmox.git
synced 2025-02-15 06:09:15 +01:00
When running certain scripts, sometimes an 'm' character is wrongly output to the terminal. This PR fixes all instances of this happening. I've also made 'RD' (red) consistent with 'GN' (green) by removing the leading 0, and my editor has kindly removed all trailing spaces from files.
141 lines
3.5 KiB
Bash
141 lines
3.5 KiB
Bash
#!/usr/bin/env bash
|
|
YW=`echo "\033[33m"`
|
|
RD=`echo "\033[1;31m"`
|
|
BL=`echo "\033[36m"`
|
|
GN=`echo "\033[1;92m"`
|
|
CL=`echo "\033[0m"`
|
|
RETRY_NUM=10
|
|
RETRY_EVERY=3
|
|
NUM=$RETRY_NUM
|
|
CM="${GN}✓${CL}"
|
|
CROSS="${RD}✗${CL}"
|
|
BFR="\\r\\033[K"
|
|
HOLD="-"
|
|
set -o errexit
|
|
set -o errtrace
|
|
set -o nounset
|
|
set -o pipefail
|
|
shopt -s expand_aliases
|
|
alias die='EXIT=$? LINE=$LINENO error_exit'
|
|
trap die ERR
|
|
|
|
function error_exit() {
|
|
trap - ERR
|
|
local reason="Unknown failure occurred."
|
|
local msg="${1:-$reason}"
|
|
local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
|
|
echo -e "$flag $msg" 1>&2
|
|
exit $EXIT
|
|
}
|
|
|
|
function msg_info() {
|
|
local msg="$1"
|
|
echo -ne " ${HOLD} ${YW}${msg}..."
|
|
}
|
|
|
|
function msg_ok() {
|
|
local msg="$1"
|
|
echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
|
|
}
|
|
function msg_error() {
|
|
local msg="$1"
|
|
echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}"
|
|
}
|
|
|
|
msg_info "Setting up Container OS "
|
|
sed -i "/$LANG/ s/\(^# \)//" /etc/locale.gen
|
|
locale-gen >/dev/null
|
|
while [ "$(hostname -I)" = "" ]; do
|
|
1>&2 echo -en "${CROSS}${RD} No Network! "
|
|
sleep $RETRY_EVERY
|
|
((NUM--))
|
|
if [ $NUM -eq 0 ]
|
|
then
|
|
1>&2 echo -e "${CROSS}${RD} No Network After $RETRY_NUM Tries${CL}"
|
|
exit 1
|
|
fi
|
|
done
|
|
msg_ok "Set up Container OS"
|
|
msg_ok "Network Connected: ${BL}$(hostname -I)"
|
|
|
|
if nc -zw1 8.8.8.8 443; then msg_ok "Internet Connected"; else msg_error "Internet NOT Connected"; exit 1; fi;
|
|
RESOLVEDIP=$(nslookup "github.com" | awk -F':' '/^Address: / { matched = 1 } matched { print $2}' | xargs)
|
|
if [[ -z "$RESOLVEDIP" ]]; then msg_error "DNS Lookup Failure"; else msg_ok "DNS Resolved github.com to $RESOLVEDIP"; fi;
|
|
|
|
msg_info "Updating Container OS"
|
|
apt-get update &>/dev/null
|
|
apt-get -y upgrade &>/dev/null
|
|
msg_ok "Updated Container OS"
|
|
|
|
msg_info "Installing Dependencies"
|
|
apt-get install -y \
|
|
python3 \
|
|
python3-dev \
|
|
python3-venv \
|
|
python3-pip \
|
|
bluez \
|
|
libffi-dev \
|
|
libssl-dev \
|
|
libjpeg-dev \
|
|
libpcap-dev \
|
|
zlib1g-dev \
|
|
autoconf \
|
|
build-essential \
|
|
libopenjp2-7 \
|
|
libtiff5 \
|
|
libturbojpeg0-dev \
|
|
tzdata \
|
|
curl \
|
|
sudo &>/dev/null
|
|
msg_ok "Installed Dependencies"
|
|
|
|
msg_info "Installing Home Assistant-Core"
|
|
mkdir /srv/homeassistant
|
|
cd /srv/homeassistant
|
|
python3 -m venv .
|
|
source bin/activate
|
|
python3 -m pip install wheel &>/dev/null
|
|
pip3 install homeassistant &>/dev/null
|
|
pip3 install Cython &>/dev/null
|
|
pip3 install python-libpcap &>/dev/null
|
|
pip3 install psycopg2-binary &>/dev/null
|
|
msg_ok "Installed Home Assistant-Core"
|
|
|
|
msg_info "Creating Service"
|
|
cat << EOF > /etc/systemd/system/homeassistant.service
|
|
|
|
[Unit]
|
|
Description=Home Assistant
|
|
After=network-online.target
|
|
[Service]
|
|
Type=simple
|
|
WorkingDirectory=/root/.homeassistant
|
|
ExecStart=/srv/homeassistant/bin/hass -c "/root/.homeassistant"
|
|
RestartForceExitStatus=100
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
systemctl enable homeassistant &>/dev/null
|
|
msg_ok "Created Service"
|
|
|
|
PASS=$(grep -w "root" /etc/shadow | cut -b6);
|
|
if [[ $PASS != $ ]]; then
|
|
msg_info "Customizing Container"
|
|
chmod -x /etc/update-motd.d/*
|
|
touch ~/.hushlogin
|
|
GETTY_OVERRIDE="/etc/systemd/system/container-getty@1.service.d/override.conf"
|
|
mkdir -p $(dirname $GETTY_OVERRIDE)
|
|
cat << EOF > $GETTY_OVERRIDE
|
|
[Service]
|
|
ExecStart=
|
|
ExecStart=-/sbin/agetty --autologin root --noclear --keep-baud tty%I 115200,38400,9600 \$TERM
|
|
EOF
|
|
systemctl daemon-reload
|
|
systemctl restart $(basename $(dirname $GETTY_OVERRIDE) | sed 's/\.d//')
|
|
msg_ok "Customized Container"
|
|
fi
|
|
|
|
msg_info "Cleaning up"
|
|
apt-get autoremove >/dev/null
|
|
apt-get autoclean >/dev/null
|
|
msg_ok "Cleaned"
|