2020-08-20_12:56:28_BST [openHABian] Starting the openHABian initial setup. 2020-08-20_12:56:28_BST [openHABian] Storing configuration... OK 2020-08-20_12:56:29_BST [openHABian] Enable maximum debugging output ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-08-20_12:56:29_BST [openHABian] Starting webserver with installation log... ' 2020-08-20_12:56:29_BST [openHABian] Starting webserver with installation log... ++ command -v python3 + [[ -x /usr/bin/python3 ]] + bash /boot/webserver.bash start + sleep 5 ++ ps -ef ++ pgrep python3 + isWebRunning=715 + [[ -n 715 ]] + echo OK OK + defaultUserAndGroup=openhabian + userName=openhabian + groupName=openhabian + is_raspbian + [[ '' == \r\a\s\p\b\i\a\n ]] ++ cat /etc/os-release + [[ PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" =~ Raspbian ]] + return 1 + is_raspios + [[ '' == \r\a\s\p\i\o\s ]] ++ cat /etc/os-release + [[ PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" =~ Raspberry Pi OS ]] + return 1 ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-27_22:53:47_GMT [openHABian] Changing default username and password... ' 2020-12-27_22:53:47_GMT [openHABian] Changing default username and password... + [[ -v openhabian ]] + id openhabian + echo SKIPPED SKIPPED + echo 'watch cat /boot/first-boot.log' + apt install --yes network-manager + [[ -z '' ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-27_22:54:43_GMT [openHABian] Setting up Ethernet connection... ' 2020-12-27_22:54:43_GMT [openHABian] Setting up Ethernet connection... + grep -qs up /sys/class/net/eth0/operstate + echo OK OK + tryUntil 'ping -c1 8.8.8.8 &> /dev/null || curl --silent --head http://www.openhab.org/docs |& grep -qs '\''HTTP/1.1 200 OK'\''' 5 1 + local cmd + local attempts + local interval + cmd='ping -c1 8.8.8.8 &> /dev/null || curl --silent --head http://www.openhab.org/docs |& grep -qs '\''HTTP/1.1 200 OK'\''' + attempts=5 + interval=1 + [[ 5 -le 0 ]] + cond_echo '\nexecuting ping -c1 8.8.8.8 &> /dev/null || curl --silent --head http://www.openhab.org/docs |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'ping -c1 8.8.8.8 &> /dev/null || curl --silent --head http://www.openhab.org/docs |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ ping -c1 8.8.8.8 + out=0 + [[ 0 -eq 0 ]] + break + [[ -z 1 ]] + return 5 ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-27_22:54:43_GMT [openHABian] Ensuring network connectivity... ' 2020-12-27_22:54:43_GMT [openHABian] Ensuring network connectivity... + tryUntil 'ping -c1 8.8.8.8 &> /dev/null || curl --silent --head http://www.openhab.org/docs |& grep -qs '\''HTTP/1.1 200 OK'\''' 86400 1 + local cmd + local attempts + local interval + cmd='ping -c1 8.8.8.8 &> /dev/null || curl --silent --head http://www.openhab.org/docs |& grep -qs '\''HTTP/1.1 200 OK'\''' + attempts=86400 + interval=1 + [[ 86400 -le 0 ]] + cond_echo '\nexecuting ping -c1 8.8.8.8 &> /dev/null || curl --silent --head http://www.openhab.org/docs |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'ping -c1 8.8.8.8 &> /dev/null || curl --silent --head http://www.openhab.org/docs |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ ping -c1 8.8.8.8 + out=0 + [[ 0 -eq 0 ]] + break + [[ -z 1 ]] + return 86400 + echo OK OK ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-27_22:54:43_GMT [openHABian] Waiting for dpkg/apt to get ready... ' 2020-12-27_22:54:43_GMT [openHABian] Waiting for dpkg/apt to get ready... + wait_for_apt_to_be_ready + local attempts + local interval + local pid + attempts=10 + interval=1 + [[ 10 -le 0 ]] + pid=1713 + apt-get update +++ tail --pid=1713 -f /dev/null ++ eval '' + [[ '' -eq 0 ]] + return 0 + echo OK OK ++ dpkg -s raspberrypi-kernel ++ grep 'Version:[[:space:]]' + firmwareBefore='Version: 1.20201201-1' ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-27_22:54:53_GMT [openHABian] Updating repositories and upgrading installed packages... ' 2020-12-27_22:54:53_GMT [openHABian] Updating repositories and upgrading installed packages... + apt-get install --fix-broken --yes +++ apt-get --yes upgrade ++ eval '' + [[ '' -eq 100 ]] ++ dpkg -s raspberrypi-kernel ++ grep 'Version:[[:space:]]' + [[ Version: 1.20201201-1 != \V\e\r\s\i\o\n\:\ \1\.\2\0\2\0\1\2\0\1\-\1 ]] + echo OK OK ++ command -v python3 + [[ -x /usr/bin/python3 ]] + bash /boot/webserver.bash reinsure_running ++ command -v git + [[ -x '' ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-27_22:55:22_GMT [openHABian] Installing git package... ' 2020-12-27_22:55:22_GMT [openHABian] Installing git package... + apt-get install --yes git + echo OK OK ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-27_22:56:02_GMT [openHABian] Updating myself from https://github.com/openhab/openhabian, openHAB3 branch... ' 2020-12-27_22:56:02_GMT [openHABian] Updating myself from https://github.com/openhab/openhabian, openHAB3 branch... + type openhabian_update + openhabian_update + echo OK OK + ln -sfn /opt/openhabian/openhabian-setup.sh /usr/local/bin/openhabian-config ++ timestamp ++ date +%F_%T_%Z + echo '2020-12-27_22:56:08_GMT [openHABian] Starting execution of '\''openhabian-config unattended'\''... OK' 2020-12-27_22:56:08_GMT [openHABian] Starting execution of 'openhabian-config unattended'... OK + openhabian-config unattended 2020-12-27_22:56:08_GMT [openHABian] Checking for root privileges... OK + export UNATTENDED MIGRATION SILENT DEBUGMAX INTERACTIVE + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/auth.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/backup.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/config.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/ext-storage.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/find.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/helpers.bash ++ ESC='\033[' ++ COL_DEF='\033[39;49;00m' ++ COL_RED='\033[31;01m' ++ COL_GREEN='\033[32;01m' ++ COL_YELLOW='\033[33;01m' ++ COL_BLUE='\033[34;01m' ++ COL_MAGENTA='\033[35;01m' ++ COL_CYAN='\033[36;01m' ++ COL_LGRAY='\033[37;01m' ++ COL_DGRAY='\033[90;01m' ++ export COL_DEF COL_RED COL_GREEN COL_YELLOW COL_BLUE COL_MAGENTA COL_CYAN COL_LGRAY COL_DGRAY + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/influxdb+grafana.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/java-jre.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/menu.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/nodejs-apps.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/openhab.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/openhabian.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/packages.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/system.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/vpn.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/wifi.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/zram.bash ++ pwd + OLDWD=/ + cd /opt + config_ipv6 + local aptConf=/etc/apt/apt.conf/S90force-ipv4 + local sysctlConf=/etc/sysctl.d/99-sysctl.conf + [[ enable == \d\i\s\a\b\l\e ]] + [[ enable == \e\n\a\b\l\e ]] + grep -qs '^[[:space:]]*# Disable all IPv6 functionality' /etc/sysctl.d/99-sysctl.conf + [[ -n 1 ]] + export DEBIAN_FRONTEND=noninteractive + DEBIAN_FRONTEND=noninteractive + wait_for_apt_to_finish_update ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-27_22:56:08_GMT [openHABian] Updating Linux package information... ' 2020-12-27_22:56:08_GMT [openHABian] Updating Linux package information... + [[ -z '' ]] + apt_update + PID_APT=3339 + apt-get update + tail --pid=3339 -f /dev/null + echo OK OK + load_create_config + local 'questionText=\nWelcome to openHABian!\n\nPlease provide the name of your Linux user i.e. the account you normally log in with.\n\nTypical user names are '\''pi'\'' or '\''ubuntu'\''.' + local input + [[ -f /etc/openhabian.conf ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-27_22:56:14_GMT [openHABian] Loading configuration file '\''/etc/openhabian.conf'\''... ' 2020-12-27_22:56:14_GMT [openHABian] Loading configuration file '/etc/openhabian.conf'... ++ getent group openhabian + [[ ! -n '' ]] + create_user_and_group + local userName=openhabian ++ id -u openhabian + [[ -n '' ]] + cond_redirect adduser --quiet --disabled-password --gecos 'openHABian,,,,openHAB admin user' --shell /bin/bash --home /home/openhabian openhabian + [[ -n '' ]] + echo -e '\n\033[90;01m$ adduser --quiet --disabled-password --gecos openHABian,,,,openHAB admin user --shell /bin/bash --home /home/openhabian openhabian \033[39;49;00m' $ adduser --quiet --disabled-password --gecos openHABian,,,,openHAB admin user --shell /bin/bash --home /home/openhabian openhabian + adduser --quiet --disabled-password --gecos 'openHABian,,,,openHAB admin user' --shell /bin/bash --home /home/openhabian openhabian + return 0 + echo openhabian:openhabian + chpasswd + cond_redirect usermod --append --groups openhab,sudo openhabian + source /etc/openhabian.conf ++ hostname=openHABianDevice ++ username=openhabian ++ userpw=openhabian ++ timezone=Australia/Brisbane ++ locales='en_US.UTF-8 de_DE.UTF-8' ++ system_default_locale=en_US.UTF-8 ++ wifi_ssid= ++ wifi_psk= ++ wifi_country= ++ ipv6=enable ++ repositoryurl=https://github.com/openhab/openhabian ++ clonebranch=openHAB3 ++ debugmode=maximum ++ cached_java_opt=Zulu11-64 ++ java_opt=Zulu11-64 ++ hotspot=enable + echo OK OK + change_swapsize + is_pi + is_pifour + [[ '' == \p\i\4 ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]11[0-9a-fA-F]$' /proc/cpuinfo + return 0 + return 0 + local free + local minFree + local swap + local totalMemory ++ awk '/MemTotal/ {print $2}' /proc/meminfo + totalMemory=8003320 + [[ -z 8003320 ]] + swap=16006640 + minFree=32013280 ++ df -hk / ++ awk '/dev/ { print $4 }' + free=4595924 + [[ 4595924 -ge 32013280 ]] + [[ 4595924 -ge 16006640 ]] + return 0 + timezone_setting + [[ -n '' ]] + [[ -n Australia/Brisbane ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-27_22:56:15_GMT [openHABian] Setting timezone based on openhabian.conf... ' 2020-12-27_22:56:15_GMT [openHABian] Setting timezone based on openhabian.conf... + running_in_docker + grep -qs 'docker\|lxc' /proc/1/cgroup + [[ -f /.dockerenv ]] + return 1 + running_on_github + [[ -n '' ]] + return 1 + cond_redirect timedatectl set-timezone Australia/Brisbane + [[ -n '' ]] + echo -e '\n\033[90;01m$ timedatectl set-timezone Australia/Brisbane \033[39;49;00m' $ timedatectl set-timezone Australia/Brisbane + timedatectl set-timezone Australia/Brisbane + return 0 ++ cat /etc/timezone + echo 'OK (Australia/Brisbane)' OK (Australia/Brisbane) + setup_ntp enable + running_in_docker + grep -qs 'docker\|lxc' /proc/1/cgroup + [[ -f /.dockerenv ]] + return 1 + is_raspbian + [[ '' == \r\a\s\p\b\i\a\n ]] ++ cat /etc/os-release + [[ PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" =~ Raspbian ]] + return 1 ++ timestamp ++ date +%F_%T_%Z + echo '2020-12-28_08:56:15_AEST [openHABian] Enabling time synchronization using NTP... SKIPPED' 2020-12-28_08:56:15_AEST [openHABian] Enabling time synchronization using NTP... SKIPPED + return 0 + locale_setting + local locale + dpkg -s locales + [[ -n '' ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_08:56:15_AEST [openHABian] Setting locale based on openhabian.conf... ' 2020-12-28_08:56:15_AEST [openHABian] Setting locale based on openhabian.conf... + is_ubuntu + [[ '' == \u\b\u\n\t\u ]] ++ cat /etc/os-release + [[ PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" =~ Ubuntu ]] + return 1 + for loc in $locales + sed -i '/^#[[:space:]]en_US.UTF-8/s/^#[[:space:]]//' /etc/locale.gen + for loc in $locales + sed -i '/^#[[:space:]]de_DE.UTF-8/s/^#[[:space:]]//' /etc/locale.gen + cond_redirect locale-gen + [[ -n '' ]] + echo -e '\n\033[90;01m$ locale-gen \033[39;49;00m' $ locale-gen + locale-gen Generating locales (this might take a while)... de_DE.UTF-8... done en_GB.UTF-8... done en_US.UTF-8... done Generation complete. + return 0 + cond_redirect dpkg-reconfigure --frontend=noninteractive locales + [[ -n '' ]] + echo -e '\n\033[90;01m$ dpkg-reconfigure --frontend=noninteractive locales \033[39;49;00m' $ dpkg-reconfigure --frontend=noninteractive locales + dpkg-reconfigure --frontend=noninteractive locales Generating locales (this might take a while)... de_DE.UTF-8... done en_GB.UTF-8... done en_US.UTF-8... done Generation complete. + return 0 ++ grep '^[[:space:]]*LANG=' /etc/default/locale ++ sed 's|LANG=||g' + locale=en_GB.UTF-8 + cond_redirect update-locale LANG=en_GB.UTF-8 LC_ALL=en_GB.UTF-8 LC_CTYPE=en_GB.UTF-8 LANGUAGE=en_GB.UTF-8 + [[ -n '' ]] + echo -e '\n\033[90;01m$ update-locale LANG=en_GB.UTF-8 LC_ALL=en_GB.UTF-8 LC_CTYPE=en_GB.UTF-8 LANGUAGE=en_GB.UTF-8 \033[39;49;00m' $ update-locale LANG=en_GB.UTF-8 LC_ALL=en_GB.UTF-8 LC_CTYPE=en_GB.UTF-8 LANGUAGE=en_GB.UTF-8 + update-locale LANG=en_GB.UTF-8 LC_ALL=en_GB.UTF-8 LC_CTYPE=en_GB.UTF-8 LANGUAGE=en_GB.UTF-8 + return 0 + echo 'OK (reboot required)' OK (reboot required) + [[ -n '' ]] + hostname_change + running_in_docker + grep -qs 'docker\|lxc' /proc/1/cgroup + [[ -f /.dockerenv ]] + return 1 + local newHostname + [[ -n '' ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_08:57:03_AEST [openHABian] Setting hostname of the base system based on openhabian.conf... ' 2020-12-28_08:57:03_AEST [openHABian] Setting hostname of the base system based on openhabian.conf... + newHostname=openHABianDevice + cond_redirect hostnamectl set-hostname openHABianDevice + [[ -n '' ]] + echo -e '\n\033[90;01m$ hostnamectl set-hostname openHABianDevice \033[39;49;00m' $ hostnamectl set-hostname openHABianDevice + hostnamectl set-hostname openHABianDevice + return 0 + sed -i 's|127.0.1.1.*$|127.0.1.1 openHABianDevice|g' /etc/hosts + echo OK OK + [[ -n '' ]] + memory_split + is_pi + is_pifour + [[ '' == \p\i\4 ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]11[0-9a-fA-F]$' /proc/cpuinfo + return 0 + return 0 ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_08:57:04_AEST [openHABian] Setting the GPU memory split down to 16MB for headless system... ' 2020-12-28_08:57:04_AEST [openHABian] Setting the GPU memory split down to 16MB for headless system... + grep -qs '^[[:space:]]*gpu_mem' /boot/config.txt + echo gpu_mem=16 + echo OK OK + enable_rpi_audio + is_pi + is_pifour + [[ '' == \p\i\4 ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]11[0-9a-fA-F]$' /proc/cpuinfo + return 0 + return 0 ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_08:57:04_AEST [openHABian] Enabling Audio output... ' 2020-12-28_08:57:04_AEST [openHABian] Enabling Audio output... + grep -qs '^[[:space:]]*dtparam=audio' /boot/config.txt + cond_redirect sed -i 's|dtparam=audio.*$|dtparam=audio=on|g' /boot/config.txt + [[ -n '' ]] + echo -e '\n\033[90;01m$ sed -i s|dtparam=audio.*$|dtparam=audio=on|g /boot/config.txt \033[39;49;00m' $ sed -i s|dtparam=audio.*$|dtparam=audio=on|g /boot/config.txt + sed -i 's|dtparam=audio.*$|dtparam=audio=on|g' /boot/config.txt + return 0 + cond_redirect adduser openhabian audio + [[ -n '' ]] + echo -e '\n\033[90;01m$ adduser openhabian audio \033[39;49;00m' $ adduser openhabian audio + adduser openhabian audio Adding user `openhabian' to group `audio' ... Adding user openhabian to group audio Done. + return 0 + echo OK OK + basic_packages ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_08:57:04_AEST [openHABian] Installing basic can'\''t-be-wrong packages (screen, vim, ...)... ' 2020-12-28_08:57:04_AEST [openHABian] Installing basic can't-be-wrong packages (screen, vim, ...)... ++ command -v raspi-config + [[ -x /usr/bin/raspi-config ]] + cond_redirect apt-get purge --yes raspi-config + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get purge --yes raspi-config \033[39;49;00m' $ apt-get purge --yes raspi-config + apt-get purge --yes raspi-config Reading package lists... Building dependency tree... Reading state information... The following package was automatically installed and is no longer required: triggerhappy Use 'apt autoremove' to remove it. The following packages will be REMOVED: raspi-config* 0 upgraded, 0 newly installed, 1 to remove and 1 not upgraded. After this operation, 124 kB disk space will be freed. (Reading database ... 46482 files and directories currently installed.) Removing raspi-config (20201108) ... (Reading database ... 46474 files and directories currently installed.) Purging configuration files for raspi-config (20201108) ... Processing triggers for systemd (241-7~deb10u5) ... + return 0 + cond_redirect apt-get install --yes screen vim nano mc vfu bash-completion htop curl wget multitail git util-linux bzip2 zip unzip xz-utils software-properties-common man-db whiptail acl usbutils dirmngr arping + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get install --yes screen vim nano mc vfu bash-completion htop curl wget multitail git util-linux bzip2 zip unzip xz-utils software-properties-common man-db whiptail acl usbutils dirmngr arping \033[39;49;00m' $ apt-get install --yes screen vim nano mc vfu bash-completion htop curl wget multitail git util-linux bzip2 zip unzip xz-utils software-properties-common man-db whiptail acl usbutils dirmngr arping + apt-get install --yes screen vim nano mc vfu bash-completion htop curl wget multitail git util-linux bzip2 zip unzip xz-utils software-properties-common man-db whiptail acl usbutils dirmngr arping Reading package lists... Building dependency tree... Reading state information... bash-completion is already the newest version (1:2.8-6). bzip2 is already the newest version (1.0.6-9.2~deb10u1). bzip2 set to manually installed. curl is already the newest version (7.64.0-4+deb10u1). git is already the newest version (1:2.20.1-2+deb10u3). dirmngr is already the newest version (2.2.12-1+deb10u1). htop is already the newest version (2.2.0-1+b1). man-db is already the newest version (2.8.5-2). nano is already the newest version (3.2-3). whiptail is already the newest version (0.52.20-8). unzip is already the newest version (6.0-23+deb10u1). usbutils is already the newest version (1:010-3). util-linux is already the newest version (2.33.1-0.1). wget is already the newest version (1.20.1-1.1). wget set to manually installed. xz-utils is already the newest version (5.2.4-1). xz-utils set to manually installed. The following package was automatically installed and is no longer required: triggerhappy Use 'apt autoremove' to remove it. The following additional packages will be installed: gir1.2-glib-2.0 gir1.2-packagekitglib-1.0 libappstream4 libgirepository-1.0-1 libglib2.0-bin libgpm2 libgstreamer1.0-0 libnet1 libpackagekit-glib2-18 libstemmer0d libutempter0 libyaml-0-2 mc-data packagekit packagekit-tools python3-dbus python3-distro-info python3-gi python3-pycurl python3-software-properties unattended-upgrades vim-runtime Suggested packages: gpm gstreamer1.0-tools arj catdvi | texlive-binaries dbview djvulibre-bin epub-utils genisoimage gv imagemagick libaspell-dev links | w3m | lynx odt2txt poppler-utils python-boto python-tz xpdf | pdf-viewer appstream python-dbus-doc python3-dbus-dbg libcurl4-gnutls-dev python-pycurl-doc python3-pycurl-dbg byobu | screenie | iselect bsd-mailx default-mta | mail-transport-agent needrestart powermgmt-base ctags vim-doc vim-scripts The following NEW packages will be installed: acl arping gir1.2-glib-2.0 gir1.2-packagekitglib-1.0 libappstream4 libgirepository-1.0-1 libglib2.0-bin libgpm2 libgstreamer1.0-0 libnet1 libpackagekit-glib2-18 libstemmer0d libutempter0 libyaml-0-2 mc mc-data multitail packagekit packagekit-tools python3-dbus python3-distro-info python3-gi python3-pycurl python3-software-properties screen software-properties-common unattended-upgrades vfu vim vim-runtime zip Preconfiguring packages ... 0 upgraded, 31 newly installed, 0 to remove and 1 not upgraded. Need to get 0 B/13.9 MB of archives. After this operation, 57.0 MB of additional disk space will be used. Selecting previously unselected package acl. (Reading database ... 46471 files and directories currently installed.) Preparing to unpack .../00-acl_2.2.53-4_arm64.deb ... Unpacking acl (2.2.53-4) ... Selecting previously unselected package libnet1:arm64. Preparing to unpack .../01-libnet1_1.1.6+dfsg-3.1_arm64.deb ... Unpacking libnet1:arm64 (1.1.6+dfsg-3.1) ... Selecting previously unselected package arping. Preparing to unpack .../02-arping_2.19-6_arm64.deb ... Unpacking arping (2.19-6) ... Selecting previously unselected package libgirepository-1.0-1:arm64. Preparing to unpack .../03-libgirepository-1.0-1_1.58.3-2_arm64.deb ... Unpacking libgirepository-1.0-1:arm64 (1.58.3-2) ... Selecting previously unselected package gir1.2-glib-2.0:arm64. Preparing to unpack .../04-gir1.2-glib-2.0_1.58.3-2_arm64.deb ... Unpacking gir1.2-glib-2.0:arm64 (1.58.3-2) ... Selecting previously unselected package libpackagekit-glib2-18:arm64. Preparing to unpack .../05-libpackagekit-glib2-18_1.1.12-5_arm64.deb ... Unpacking libpackagekit-glib2-18:arm64 (1.1.12-5) ... Selecting previously unselected package gir1.2-packagekitglib-1.0. Preparing to unpack .../06-gir1.2-packagekitglib-1.0_1.1.12-5_arm64.deb ... Unpacking gir1.2-packagekitglib-1.0 (1.1.12-5) ... Selecting previously unselected package libstemmer0d:arm64. Preparing to unpack .../07-libstemmer0d_0+svn585-1+b2_arm64.deb ... Unpacking libstemmer0d:arm64 (0+svn585-1+b2) ... Selecting previously unselected package libyaml-0-2:arm64. Preparing to unpack .../08-libyaml-0-2_0.2.1-1_arm64.deb ... Unpacking libyaml-0-2:arm64 (0.2.1-1) ... Selecting previously unselected package libappstream4:arm64. Preparing to unpack .../09-libappstream4_0.12.5-1_arm64.deb ... Unpacking libappstream4:arm64 (0.12.5-1) ... Selecting previously unselected package libglib2.0-bin. Preparing to unpack .../10-libglib2.0-bin_2.58.3-2+deb10u2_arm64.deb ... Unpacking libglib2.0-bin (2.58.3-2+deb10u2) ... Selecting previously unselected package libgpm2:arm64. Preparing to unpack .../11-libgpm2_1.20.7-5_arm64.deb ... Unpacking libgpm2:arm64 (1.20.7-5) ... Selecting previously unselected package libgstreamer1.0-0:arm64. Preparing to unpack .../12-libgstreamer1.0-0_1.14.4-1_arm64.deb ... Unpacking libgstreamer1.0-0:arm64 (1.14.4-1) ... Selecting previously unselected package libutempter0:arm64. Preparing to unpack .../13-libutempter0_1.1.6-3_arm64.deb ... Unpacking libutempter0:arm64 (1.1.6-3) ... Selecting previously unselected package mc-data. Preparing to unpack .../14-mc-data_3%3a4.8.22-1_all.deb ... Unpacking mc-data (3:4.8.22-1) ... Selecting previously unselected package mc. Preparing to unpack .../15-mc_3%3a4.8.22-1_arm64.deb ... Unpacking mc (3:4.8.22-1) ... Selecting previously unselected package multitail. Preparing to unpack .../16-multitail_6.4.2-3+b1_arm64.deb ... Unpacking multitail (6.4.2-3+b1) ... Selecting previously unselected package packagekit. Preparing to unpack .../17-packagekit_1.1.12-5_arm64.deb ... Unpacking packagekit (1.1.12-5) ... Selecting previously unselected package packagekit-tools. Preparing to unpack .../18-packagekit-tools_1.1.12-5_arm64.deb ... Unpacking packagekit-tools (1.1.12-5) ... Selecting previously unselected package python3-dbus. Preparing to unpack .../19-python3-dbus_1.2.8-3_arm64.deb ... Unpacking python3-dbus (1.2.8-3) ... Selecting previously unselected package python3-distro-info. Preparing to unpack .../20-python3-distro-info_0.21_all.deb ... Unpacking python3-distro-info (0.21) ... Selecting previously unselected package python3-gi. Preparing to unpack .../21-python3-gi_3.30.4-1_arm64.deb ... Unpacking python3-gi (3.30.4-1) ... Selecting previously unselected package python3-pycurl. Preparing to unpack .../22-python3-pycurl_7.43.0.2-0.1_arm64.deb ... Unpacking python3-pycurl (7.43.0.2-0.1) ... Selecting previously unselected package python3-software-properties. Preparing to unpack .../23-python3-software-properties_0.96.20.2-2_all.deb ... Unpacking python3-software-properties (0.96.20.2-2) ... Selecting previously unselected package screen. Preparing to unpack .../24-screen_4.6.2-3_arm64.deb ... Unpacking screen (4.6.2-3) ... Selecting previously unselected package software-properties-common. Preparing to unpack .../25-software-properties-common_0.96.20.2-2_all.deb ... Unpacking software-properties-common (0.96.20.2-2) ... Selecting previously unselected package unattended-upgrades. Preparing to unpack .../26-unattended-upgrades_1.11.2_all.deb ... Unpacking unattended-upgrades (1.11.2) ... Selecting previously unselected package vfu. Preparing to unpack .../27-vfu_4.16+repack-1+b1_arm64.deb ... Unpacking vfu (4.16+repack-1+b1) ... Selecting previously unselected package vim-runtime. Preparing to unpack .../28-vim-runtime_2%3a8.1.0875-5_all.deb ... Adding 'diversion of /usr/share/vim/vim81/doc/help.txt to /usr/share/vim/vim81/doc/help.txt.vim-tiny by vim-runtime' Adding 'diversion of /usr/share/vim/vim81/doc/tags to /usr/share/vim/vim81/doc/tags.vim-tiny by vim-runtime' Unpacking vim-runtime (2:8.1.0875-5) ... Selecting previously unselected package vim. Preparing to unpack .../29-vim_2%3a8.1.0875-5_arm64.deb ... Unpacking vim (2:8.1.0875-5) ... Selecting previously unselected package zip. Preparing to unpack .../30-zip_3.0-11+b1_arm64.deb ... Unpacking zip (3.0-11+b1) ... Setting up python3-dbus (1.2.8-3) ... Setting up libgpm2:arm64 (1.20.7-5) ... Setting up libyaml-0-2:arm64 (0.2.1-1) ... Setting up libglib2.0-bin (2.58.3-2+deb10u2) ... Setting up libpackagekit-glib2-18:arm64 (1.1.12-5) ... Setting up libnet1:arm64 (1.1.6+dfsg-3.1) ... Setting up acl (2.2.53-4) ... Setting up vfu (4.16+repack-1+b1) ... Setting up zip (3.0-11+b1) ... Setting up python3-pycurl (7.43.0.2-0.1) ... Setting up python3-software-properties (0.96.20.2-2) ... Setting up mc-data (3:4.8.22-1) ... Setting up libutempter0:arm64 (1.1.6-3) ... Setting up multitail (6.4.2-3+b1) ... Setting up libgirepository-1.0-1:arm64 (1.58.3-2) ... Setting up libstemmer0d:arm64 (0+svn585-1+b2) ... Setting up vim-runtime (2:8.1.0875-5) ... Setting up python3-distro-info (0.21) ... Setting up libgstreamer1.0-0:arm64 (1.14.4-1) ... Setcap worked! gst-ptp-helper is not suid! Setting up vim (2:8.1.0875-5) ... update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vim (vim) in auto mode update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vimdiff (vimdiff) in auto mode update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rvim (rvim) in auto mode update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rview (rview) in auto mode update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vi (vi) in auto mode update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/view (view) in auto mode update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/ex (ex) in auto mode Setting up arping (2.19-6) ... Setting up mc (3:4.8.22-1) ... Setting up screen (4.6.2-3) ... Setting up libappstream4:arm64 (0.12.5-1) ... Setting up unattended-upgrades (1.11.2) ... Creating config file /etc/apt/apt.conf.d/20auto-upgrades with new version Creating config file /etc/apt/apt.conf.d/50unattended-upgrades with new version Created symlink /etc/systemd/system/multi-user.target.wants/unattended-upgrades.service → /lib/systemd/system/unattended-upgrades.service. Synchronizing state of unattended-upgrades.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable unattended-upgrades Setting up gir1.2-glib-2.0:arm64 (1.58.3-2) ... Setting up packagekit (1.1.12-5) ... Setting up packagekit-tools (1.1.12-5) ... Setting up gir1.2-packagekitglib-1.0 (1.1.12-5) ... Setting up python3-gi (3.30.4-1) ... Setting up software-properties-common (0.96.20.2-2) ... Processing triggers for mime-support (3.62) ... Processing triggers for libc-bin (2.28-10) ... Processing triggers for systemd (241-7~deb10u5) ... Processing triggers for man-db (2.8.5-2) ... Processing triggers for dbus (1.12.20-0+deb10u1) ... + return 0 + echo OK OK + needed_packages + local 'bluetoothPackages=bluez python3-dev libbluetooth-dev raspberrypi-sys-mods pi-bluetooth' ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_08:58:58_AEST [openHABian] Installing additional needed packages... ' 2020-12-28_08:58:58_AEST [openHABian] Installing additional needed packages... + cond_redirect apt-get install --yes apt-transport-https bc sysstat jq moreutils avahi-daemon python3 python3-pip python3-wheel python3-setuptools avahi-autoipd fontconfig + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get install --yes apt-transport-https bc sysstat jq moreutils avahi-daemon python3 python3-pip python3-wheel python3-setuptools avahi-autoipd fontconfig \033[39;49;00m' $ apt-get install --yes apt-transport-https bc sysstat jq moreutils avahi-daemon python3 python3-pip python3-wheel python3-setuptools avahi-autoipd fontconfig + apt-get install --yes apt-transport-https bc sysstat jq moreutils avahi-daemon python3 python3-pip python3-wheel python3-setuptools avahi-autoipd fontconfig Reading package lists... Building dependency tree... Reading state information... avahi-daemon is already the newest version (0.7-4+b1). python3 is already the newest version (3.7.3-1). python3 set to manually installed. The following package was automatically installed and is no longer required: triggerhappy Use 'apt autoremove' to remove it. The following additional packages will be installed: dh-python fontconfig-config fonts-dejavu-core libexpat1-dev libfontconfig1 libio-pty-perl libipc-run-perl libjq1 libonig5 libpython3-dev libpython3.7-dev libsensors-config libsensors5 python-pip-whl python3-asn1crypto python3-cffi-backend python3-crypto python3-cryptography python3-dev python3-distutils python3-entrypoints python3-keyring python3-keyrings.alt python3-lib2to3 python3-secretstorage python3-xdg python3.7-dev Suggested packages: lm-sensors libtime-duration-perl libtimedate-perl python-crypto-doc python-cryptography-doc python3-cryptography-vectors gnome-keyring libkf5wallet-bin gir1.2-gnomekeyring-1.0 python-secretstorage-doc python-setuptools-doc isag The following NEW packages will be installed: apt-transport-https avahi-autoipd bc dh-python fontconfig fontconfig-config fonts-dejavu-core jq libexpat1-dev libfontconfig1 libio-pty-perl libipc-run-perl libjq1 libonig5 libpython3-dev libpython3.7-dev libsensors-config libsensors5 moreutils python-pip-whl python3-asn1crypto python3-cffi-backend python3-crypto python3-cryptography python3-dev python3-distutils python3-entrypoints python3-keyring python3-keyrings.alt python3-lib2to3 python3-pip python3-secretstorage python3-setuptools python3-wheel python3-xdg python3.7-dev sysstat Preconfiguring packages ... 0 upgraded, 37 newly installed, 0 to remove and 1 not upgraded. Need to get 0 B/9,741 kB of archives. After this operation, 36.7 MB of additional disk space will be used. Selecting previously unselected package apt-transport-https. (Reading database ... 49318 files and directories currently installed.) Preparing to unpack .../00-apt-transport-https_1.8.2.2_all.deb ... Unpacking apt-transport-https (1.8.2.2) ... Selecting previously unselected package avahi-autoipd. Preparing to unpack .../01-avahi-autoipd_0.7-4+b1_arm64.deb ... Unpacking avahi-autoipd (0.7-4+b1) ... Selecting previously unselected package bc. Preparing to unpack .../02-bc_1.07.1-2+b1_arm64.deb ... Unpacking bc (1.07.1-2+b1) ... Selecting previously unselected package python3-lib2to3. Preparing to unpack .../03-python3-lib2to3_3.7.3-1_all.deb ... Unpacking python3-lib2to3 (3.7.3-1) ... Selecting previously unselected package python3-distutils. Preparing to unpack .../04-python3-distutils_3.7.3-1_all.deb ... Unpacking python3-distutils (3.7.3-1) ... Selecting previously unselected package dh-python. Preparing to unpack .../05-dh-python_3.20190308_all.deb ... Unpacking dh-python (3.20190308) ... Selecting previously unselected package fonts-dejavu-core. Preparing to unpack .../06-fonts-dejavu-core_2.37-1_all.deb ... Unpacking fonts-dejavu-core (2.37-1) ... Selecting previously unselected package fontconfig-config. Preparing to unpack .../07-fontconfig-config_2.13.1-2_all.deb ... Unpacking fontconfig-config (2.13.1-2) ... Selecting previously unselected package libfontconfig1:arm64. Preparing to unpack .../08-libfontconfig1_2.13.1-2_arm64.deb ... Unpacking libfontconfig1:arm64 (2.13.1-2) ... Selecting previously unselected package fontconfig. Preparing to unpack .../09-fontconfig_2.13.1-2_arm64.deb ... Unpacking fontconfig (2.13.1-2) ... Selecting previously unselected package libonig5:arm64. Preparing to unpack .../10-libonig5_6.9.1-1_arm64.deb ... Unpacking libonig5:arm64 (6.9.1-1) ... Selecting previously unselected package libjq1:arm64. Preparing to unpack .../11-libjq1_1.5+dfsg-2+b1_arm64.deb ... Unpacking libjq1:arm64 (1.5+dfsg-2+b1) ... Selecting previously unselected package jq. Preparing to unpack .../12-jq_1.5+dfsg-2+b1_arm64.deb ... Unpacking jq (1.5+dfsg-2+b1) ... Selecting previously unselected package libexpat1-dev:arm64. Preparing to unpack .../13-libexpat1-dev_2.2.6-2+deb10u1_arm64.deb ... Unpacking libexpat1-dev:arm64 (2.2.6-2+deb10u1) ... Selecting previously unselected package libio-pty-perl. Preparing to unpack .../14-libio-pty-perl_1%3a1.08-1.1+b5_arm64.deb ... Unpacking libio-pty-perl (1:1.08-1.1+b5) ... Selecting previously unselected package libipc-run-perl. Preparing to unpack .../15-libipc-run-perl_20180523.0-1_all.deb ... Unpacking libipc-run-perl (20180523.0-1) ... Selecting previously unselected package libpython3.7-dev:arm64. Preparing to unpack .../16-libpython3.7-dev_3.7.3-2+deb10u2_arm64.deb ... Unpacking libpython3.7-dev:arm64 (3.7.3-2+deb10u2) ... Selecting previously unselected package libpython3-dev:arm64. Preparing to unpack .../17-libpython3-dev_3.7.3-1_arm64.deb ... Unpacking libpython3-dev:arm64 (3.7.3-1) ... Selecting previously unselected package libsensors-config. Preparing to unpack .../18-libsensors-config_1%3a3.5.0-3_all.deb ... Unpacking libsensors-config (1:3.5.0-3) ... Selecting previously unselected package libsensors5:arm64. Preparing to unpack .../19-libsensors5_1%3a3.5.0-3_arm64.deb ... Unpacking libsensors5:arm64 (1:3.5.0-3) ... Selecting previously unselected package moreutils. Preparing to unpack .../20-moreutils_0.62-1_arm64.deb ... Unpacking moreutils (0.62-1) ... Selecting previously unselected package python-pip-whl. Preparing to unpack .../21-python-pip-whl_18.1-5+rpt1_all.deb ... Unpacking python-pip-whl (18.1-5+rpt1) ... Selecting previously unselected package python3-asn1crypto. Preparing to unpack .../22-python3-asn1crypto_0.24.0-1_all.deb ... Unpacking python3-asn1crypto (0.24.0-1) ... Selecting previously unselected package python3-cffi-backend. Preparing to unpack .../23-python3-cffi-backend_1.12.2-1_arm64.deb ... Unpacking python3-cffi-backend (1.12.2-1) ... Selecting previously unselected package python3-crypto. Preparing to unpack .../24-python3-crypto_2.6.1-9+b1_arm64.deb ... Unpacking python3-crypto (2.6.1-9+b1) ... Selecting previously unselected package python3-cryptography. Preparing to unpack .../25-python3-cryptography_2.6.1-3+deb10u2_arm64.deb ... Unpacking python3-cryptography (2.6.1-3+deb10u2) ... Selecting previously unselected package python3.7-dev. Preparing to unpack .../26-python3.7-dev_3.7.3-2+deb10u2_arm64.deb ... Unpacking python3.7-dev (3.7.3-2+deb10u2) ... Selecting previously unselected package python3-dev. Preparing to unpack .../27-python3-dev_3.7.3-1_arm64.deb ... Unpacking python3-dev (3.7.3-1) ... Selecting previously unselected package python3-entrypoints. Preparing to unpack .../28-python3-entrypoints_0.3-1_all.deb ... Unpacking python3-entrypoints (0.3-1) ... Selecting previously unselected package python3-secretstorage. Preparing to unpack .../29-python3-secretstorage_2.3.1-2_all.deb ... Unpacking python3-secretstorage (2.3.1-2) ... Selecting previously unselected package python3-keyring. Preparing to unpack .../30-python3-keyring_17.1.1-1_all.deb ... Unpacking python3-keyring (17.1.1-1) ... Selecting previously unselected package python3-keyrings.alt. Preparing to unpack .../31-python3-keyrings.alt_3.1.1-1_all.deb ... Unpacking python3-keyrings.alt (3.1.1-1) ... Selecting previously unselected package python3-pip. Preparing to unpack .../32-python3-pip_18.1-5+rpt1_all.deb ... Unpacking python3-pip (18.1-5+rpt1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../33-python3-setuptools_40.8.0-1_all.deb ... Unpacking python3-setuptools (40.8.0-1) ... Selecting previously unselected package python3-wheel. Preparing to unpack .../34-python3-wheel_0.32.3-2_all.deb ... Unpacking python3-wheel (0.32.3-2) ... Selecting previously unselected package python3-xdg. Preparing to unpack .../35-python3-xdg_0.25-5_all.deb ... Unpacking python3-xdg (0.25-5) ... Selecting previously unselected package sysstat. Preparing to unpack .../36-sysstat_12.0.3-2_arm64.deb ... Unpacking sysstat (12.0.3-2) ... Setting up python3-entrypoints (0.3-1) ... Setting up apt-transport-https (1.8.2.2) ... Setting up libio-pty-perl (1:1.08-1.1+b5) ... Setting up libsensors-config (1:3.5.0-3) ... Setting up bc (1.07.1-2+b1) ... Setting up python3-xdg (0.25-5) ... Setting up python3-wheel (0.32.3-2) ... Setting up libexpat1-dev:arm64 (2.2.6-2+deb10u1) ... Setting up avahi-autoipd (0.7-4+b1) ... Setting up fonts-dejavu-core (2.37-1) ... Setting up libipc-run-perl (20180523.0-1) ... Setting up libsensors5:arm64 (1:3.5.0-3) ... Setting up python3-crypto (2.6.1-9+b1) ... Setting up python-pip-whl (18.1-5+rpt1) ... Setting up python3-lib2to3 (3.7.3-1) ... Setting up python3-asn1crypto (0.24.0-1) ... Setting up sysstat (12.0.3-2) ... Creating config file /etc/default/sysstat with new version update-alternatives: using /usr/bin/sar.sysstat to provide /usr/bin/sar (sar) in auto mode Created symlink /etc/systemd/system/multi-user.target.wants/sysstat.service → /lib/systemd/system/sysstat.service. Setting up libonig5:arm64 (6.9.1-1) ... Setting up python3-cffi-backend (1.12.2-1) ... Setting up python3-distutils (3.7.3-1) ... Setting up dh-python (3.20190308) ... Setting up moreutils (0.62-1) ... Setting up python3-setuptools (40.8.0-1) ... Setting up libjq1:arm64 (1.5+dfsg-2+b1) ... Setting up fontconfig-config (2.13.1-2) ... Setting up libpython3.7-dev:arm64 (3.7.3-2+deb10u2) ... Setting up python3.7-dev (3.7.3-2+deb10u2) ... Setting up python3-cryptography (2.6.1-3+deb10u2) ... Setting up python3-pip (18.1-5+rpt1) ... Setting up python3-keyrings.alt (3.1.1-1) ... Setting up jq (1.5+dfsg-2+b1) ... Setting up libfontconfig1:arm64 (2.13.1-2) ... Setting up fontconfig (2.13.1-2) ... Regenerating fonts cache... done. Setting up libpython3-dev:arm64 (3.7.3-1) ... Setting up python3-secretstorage (2.3.1-2) ... Setting up python3-dev (3.7.3-1) ... Setting up python3-keyring (17.1.1-1) ... Processing triggers for systemd (241-7~deb10u5) ... Processing triggers for man-db (2.8.5-2) ... Processing triggers for libc-bin (2.28-10) ... + return 0 + echo OK OK + is_pizerow + [[ '' == \p\i\0\w ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]0[cC][0-9a-fA-F]$' /proc/cpuinfo + return 1 + is_pithree + [[ '' == \p\i\3 ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]0[8dDeE][0-9a-fA-F]$' /proc/cpuinfo + return 1 + is_pithreeplus + [[ '' == \p\i\3\+ ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]0[dDeE][0-9a-fA-F]$' /proc/cpuinfo + return 1 + is_pifour + [[ '' == \p\i\4 ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]11[0-9a-fA-F]$' /proc/cpuinfo + return 0 + [[ -z '' ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:00:49_AEST [openHABian] Installing additional bluetooth packages... ' 2020-12-28_09:00:49_AEST [openHABian] Installing additional bluetooth packages... + is_stretch + [[ '' == \s\t\r\e\t\c\h ]] ++ cat /etc/os-release + [[ PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" =~ stretch ]] + return 1 + bluetoothPackages+=' python3-bluez' + cond_redirect apt-get install --yes bluez python3-dev libbluetooth-dev raspberrypi-sys-mods pi-bluetooth python3-bluez + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get install --yes bluez python3-dev libbluetooth-dev raspberrypi-sys-mods pi-bluetooth python3-bluez \033[39;49;00m' $ apt-get install --yes bluez python3-dev libbluetooth-dev raspberrypi-sys-mods pi-bluetooth python3-bluez + apt-get install --yes bluez python3-dev libbluetooth-dev raspberrypi-sys-mods pi-bluetooth python3-bluez Reading package lists... Building dependency tree... Reading state information... python3-dev is already the newest version (3.7.3-1). python3-dev set to manually installed. bluez is already the newest version (5.50-1.2~deb10u1+rpt2). bluez set to manually installed. pi-bluetooth is already the newest version (0.1.15). raspberrypi-sys-mods is already the newest version (20201026). The following package was automatically installed and is no longer required: triggerhappy Use 'apt autoremove' to remove it. The following NEW packages will be installed: libbluetooth-dev python3-bluez 0 upgraded, 2 newly installed, 0 to remove and 1 not upgraded. Need to get 244 kB of archives. After this operation, 914 kB of additional disk space will be used. Get:1 http://deb.debian.org/debian buster/main arm64 python3-bluez arm64 0.22+really0.22-1 [46.6 kB] Get:2 http://archive.raspberrypi.org/debian buster/main arm64 libbluetooth-dev arm64 5.50-1.2~deb10u1+rpt2 [197 kB] Fetched 244 kB in 2s (135 kB/s) Selecting previously unselected package libbluetooth-dev:arm64. (Reading database ... 50785 files and directories currently installed.) Preparing to unpack .../libbluetooth-dev_5.50-1.2~deb10u1+rpt2_arm64.deb ... Unpacking libbluetooth-dev:arm64 (5.50-1.2~deb10u1+rpt2) ... Selecting previously unselected package python3-bluez. Preparing to unpack .../python3-bluez_0.22+really0.22-1_arm64.deb ... Unpacking python3-bluez (0.22+really0.22-1) ... Setting up libbluetooth-dev:arm64 (5.50-1.2~deb10u1+rpt2) ... Setting up python3-bluez (0.22+really0.22-1) ... + return 0 + echo OK OK + bashrc_copy ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:01:25_AEST [openHABian] Adding slightly tuned bash configuration files to system... ' 2020-12-28_09:01:25_AEST [openHABian] Adding slightly tuned bash configuration files to system... + cp /opt/openhabian/includes/bash.bashrc /etc/bash.bashrc + cp /opt/openhabian/includes/bashrc-root /root/.bashrc + cp /opt/openhabian/includes/bash_profile /home/openhabian/.bash_profile + chown openhabian:openhabian /home/openhabian/.bash_profile + echo OK OK + vimrc_copy ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:01:25_AEST [openHABian] Adding slightly tuned vim configuration file to system... ' 2020-12-28_09:01:25_AEST [openHABian] Adding slightly tuned vim configuration file to system... + cp /opt/openhabian/includes/vimrc /etc/vim/vimrc + echo OK OK + firemotd_setup + running_in_docker + grep -qs 'docker\|lxc' /proc/1/cgroup + [[ -f /.dockerenv ]] + return 1 + running_on_github + [[ -n '' ]] + return 1 + local firemotdDir=/opt/FireMotD + local targetDir=/etc/systemd/system/ + dpkg -s bc sysstat jq moreutils make + firemotd_download /opt ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:01:25_AEST [openHABian] Downloading FireMotD... ' 2020-12-28_09:01:25_AEST [openHABian] Downloading FireMotD... + [[ -d /opt/FireMotD ]] + cond_echo '\nUpdate... ' + [[ -z '' ]] + echo -e '\033[33;01m\nUpdate... \033[39;49;00m' Update... + cond_redirect update_git_repo /opt/FireMotD master + [[ -n '' ]] + echo -e '\n\033[90;01m$ update_git_repo /opt/FireMotD master \033[39;49;00m' $ update_git_repo /opt/FireMotD master + update_git_repo /opt/FireMotD master + local branch + local path + branch=master + path=/opt/FireMotD ++ timestamp ++ date +%F_%T_%Z ++ basename /opt/FireMotD + echo -n '2020-12-28_09:01:25_AEST [openHABian] Updating FireMotD, master branch from git... ' 2020-12-28_09:01:25_AEST [openHABian] Updating FireMotD, master branch from git... + cond_redirect git -C /opt/FireMotD fetch origin + [[ -n '' ]] + echo -e '\n\033[90;01m$ git -C /opt/FireMotD fetch origin \033[39;49;00m' $ git -C /opt/FireMotD fetch origin + git -C /opt/FireMotD fetch origin + return 0 + cond_redirect git -C /opt/FireMotD fetch --tags --force --prune + [[ -n '' ]] + echo -e '\n\033[90;01m$ git -C /opt/FireMotD fetch --tags --force --prune \033[39;49;00m' $ git -C /opt/FireMotD fetch --tags --force --prune + git -C /opt/FireMotD fetch --tags --force --prune + return 0 + cond_redirect git -C /opt/FireMotD reset --hard origin/master + [[ -n '' ]] + echo -e '\n\033[90;01m$ git -C /opt/FireMotD reset --hard origin/master \033[39;49;00m' $ git -C /opt/FireMotD reset --hard origin/master + git -C /opt/FireMotD reset --hard origin/master HEAD is now at 3d2bea6 fix + return 0 + cond_redirect git -C /opt/FireMotD clean --force -x -d + [[ -n '' ]] + echo -e '\n\033[90;01m$ git -C /opt/FireMotD clean --force -x -d \033[39;49;00m' $ git -C /opt/FireMotD clean --force -x -d + git -C /opt/FireMotD clean --force -x -d + return 0 + cond_redirect git -C /opt/FireMotD checkout master + [[ -n '' ]] + echo -e '\n\033[90;01m$ git -C /opt/FireMotD checkout master \033[39;49;00m' $ git -C /opt/FireMotD checkout master + git -C /opt/FireMotD checkout master Already on 'master' Your branch is up to date with 'origin/master'. + return 0 + echo OK OK + return 0 + echo OK OK ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:01:28_AEST [openHABian] Installing FireMotD... ' 2020-12-28_09:01:28_AEST [openHABian] Installing FireMotD... + cond_redirect make --always-make --directory=/opt/FireMotD install + [[ -n '' ]] + echo -e '\n\033[90;01m$ make --always-make --directory=/opt/FireMotD install \033[39;49;00m' $ make --always-make --directory=/opt/FireMotD install + make --always-make --directory=/opt/FireMotD install make: Entering directory '/opt/FireMotD' cp FireMotD /usr/local/bin/FireMotD chmod 755 /usr/local/bin/FireMotD mkdir -p /usr/share/firemotd/data mkdir -p /usr/share/firemotd/templates mkdir -p /usr/share/firemotd/themes mkdir -p /usr/share/firemotd/cache cp templates/* /usr/share/firemotd/templates cp themes/* /usr/share/firemotd/themes make: Leaving directory '/opt/FireMotD' + return 0 + cond_redirect make --always-make --directory=/opt/FireMotD bash_completion + [[ -n '' ]] + echo -e '\n\033[90;01m$ make --always-make --directory=/opt/FireMotD bash_completion \033[39;49;00m' $ make --always-make --directory=/opt/FireMotD bash_completion + make --always-make --directory=/opt/FireMotD bash_completion make: Entering directory '/opt/FireMotD' cp bash_completion.d/FireMotD /etc/bash_completion.d/FireMotD make: Leaving directory '/opt/FireMotD' + return 0 + echo OK OK ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:01:28_AEST [openHABian] Generating FireMotD theme... ' 2020-12-28_09:01:28_AEST [openHABian] Generating FireMotD theme... + cond_redirect FireMotD -S -d -D all + [[ -n '' ]] + echo -e '\n\033[90;01m$ FireMotD -S -d -D all \033[39;49;00m' $ FireMotD -S -d -D all + FireMotD -S -d -D all 2020-12-28 09:01:29,027: FireMotD: Info: Debug mode 2020-12-28 09:01:29,035: FireMotD: Info: FireMotD action save started 2020-12-28 09:01:29,043: FireMotD: Info: Action "save" 2020-12-28 09:01:29,051: FireMotD: Info: Exportfile /usr/share/firemotd/data/FireMotD.json not found. 2020-12-28 09:01:29,060: FireMotD: Info: Template type set to all. Overwriting.. 2020-12-28 09:01:29,083: FireMotD: Info: Exploring HostIp 2020-12-28 09:01:29,137: FireMotD: Info: Exploring Release 2020-12-28 09:01:29,194: FireMotD: Info: Exploring Kernel 2020-12-28 09:01:29,234: FireMotD: Info: Exploring Platform 2020-12-28 09:01:29,304: FireMotD: Info: Exploring InstallDate 2020-12-28 09:01:29,345: FireMotD: Info: Exploring Updates 2020-12-28 09:01:40,881: FireMotD: Info: Exploring Httpd 2020-12-28 09:01:40,921: FireMotD: Info: Exploring Nginx 2020-12-28 09:01:40,962: FireMotD: Info: Exploring Mysql 2020-12-28 09:01:41,014: FireMotD: Info: Exploring Postgres 2020-12-28 09:01:41,056: FireMotD: Info: Exploring Php 2020-12-28 09:01:41,112: FireMotD: Info: Exploring Elasticsearch 2020-12-28 09:01:41,151: FireMotD: Info: Exploring Logstash 2020-12-28 09:01:41,191: FireMotD: Info: Exploring Kibana 2020-12-28 09:01:41,229: FireMotD: Info: Export system data to "/usr/share/firemotd/data/FireMotD.json" finished. 2020-12-28 09:01:41,244: FireMotD: Info: ExportFile: -rwxrw-rw- 1 root root 3227 Dec 28 09:01 /usr/share/firemotd/data/FireMotD.json 2020-12-28 09:01:41,254: FireMotD: Info: FireMotD action save finished + return 0 + cond_redirect FireMotD -G Gray + [[ -n '' ]] + echo -e '\n\033[90;01m$ FireMotD -G Gray \033[39;49;00m' $ FireMotD -G Gray + FireMotD -G Gray + return 0 + echo OK OK + grep -qs FireMotD /home/openhabian/.bash_profile ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:01:43_AEST [openHABian] Setting up FireMotD apt updates count service... ' 2020-12-28_09:01:43_AEST [openHABian] Setting up FireMotD apt updates count service... + cond_echo '\nMake FireMotD check for new updates every night... ' + [[ -z '' ]] + echo -e '\033[33;01m\nMake FireMotD check for new updates every night... \033[39;49;00m' Make FireMotD check for new updates every night... + cond_redirect cp /opt/openhabian/includes/firemotd.service /opt/openhabian/includes/firemotd.timer /etc/systemd/system/ + [[ -n '' ]] + echo -e '\n\033[90;01m$ cp /opt/openhabian/includes/firemotd.service /opt/openhabian/includes/firemotd.timer /etc/systemd/system/ \033[39;49;00m' $ cp /opt/openhabian/includes/firemotd.service /opt/openhabian/includes/firemotd.timer /etc/systemd/system/ + cp /opt/openhabian/includes/firemotd.service /opt/openhabian/includes/firemotd.timer /etc/systemd/system/ + return 0 + cond_redirect systemctl -q daemon-reload + cond_redirect systemctl enable --now firemotd.timer + cond_echo '\nMake FireMotD check for new updates after using apt... ' + [[ -z '' ]] + echo -e '\033[33;01m\nMake FireMotD check for new updates after using apt... \033[39;49;00m' Make FireMotD check for new updates after using apt... + cond_redirect install -m 644 /opt/openhabian/includes/15firemotd /etc/apt/apt.conf.d/ + [[ -n '' ]] + echo -e '\n\033[90;01m$ install -m 644 /opt/openhabian/includes/15firemotd /etc/apt/apt.conf.d/ \033[39;49;00m' $ install -m 644 /opt/openhabian/includes/15firemotd /etc/apt/apt.conf.d/ + install -m 644 /opt/openhabian/includes/15firemotd /etc/apt/apt.conf.d/ + return 0 + cond_echo '\nInitial FireMotD updates check' + [[ -z '' ]] + echo -e '\033[33;01m\nInitial FireMotD updates check\033[39;49;00m' Initial FireMotD updates check + cond_redirect FireMotD -S + [[ -n '' ]] + echo -e '\n\033[90;01m$ FireMotD -S \033[39;49;00m' $ FireMotD -S + FireMotD -S + return 0 + echo OK OK + java_install_or_update Zulu11-64 + local branch ++ git -C /opt/openhabian rev-parse --abbrev-ref HEAD + branch=openHAB3 ++ command -v java + [[ -x '' ]] ++ command -v java + [[ -x '' ]] + [[ Zulu11-64 == \Z\u\l\u\1\1\-\6\4 ]] + [[ -n 1 ]] + java_zulu_dir + local dir + for dir in /opt/jdk/* + [[ -d /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64 ]] + return 0 ++ timestamp ++ date +%F_%T_%Z + echo '2020-12-28_09:01:52_AEST [openHABian] Installing cached version of Java to ensure that some form of Java is installed!' 2020-12-28_09:01:52_AEST [openHABian] Installing cached version of Java to ensure that some form of Java is installed! + java_zulu_prerequisite Zulu11-64 ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:01:52_AEST [openHABian] Installing Java Zulu prerequisites (libc, libstdc++, zlib1g)... ' 2020-12-28_09:01:52_AEST [openHABian] Installing Java Zulu prerequisites (libc, libstdc++, zlib1g)... + [[ Zulu11-64 == \Z\u\l\u\8\-\6\4 ]] + [[ Zulu11-64 == \Z\u\l\u\1\1\-\6\4 ]] + is_aarch64 + [[ '' == \a\a\r\c\h\6\4 ]] + [[ '' == \a\r\m\6\4 ]] + case "$(uname -m)" in ++ uname -m + return 0 ++ getconf LONG_BIT + [[ 64 == 64 ]] + dpkg -s libc6:arm64 libstdc++6:arm64 zlib1g:arm64 + echo OK OK + return 0 + java_zulu_install Zulu11-64 + local jdkArch + local jdkBin + local jdkLib ++ find /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin ... -print -quit + jdkBin=/opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin ++ find /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/lib ... -print -quit + jdkLib=/opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/lib + [[ Zulu11-64 == \Z\u\l\u\8\-\6\4 ]] + [[ Zulu11-64 == \Z\u\l\u\1\1\-\6\4 ]] + is_aarch64 + [[ '' == \a\a\r\c\h\6\4 ]] + [[ '' == \a\r\m\6\4 ]] + case "$(uname -m)" in ++ uname -m + return 0 ++ getconf LONG_BIT + [[ 64 == 64 ]] + jdkArch=aarch64 + [[ Zulu11-64 == \Z\u\l\u\8\-\3\2 ]] + [[ Zulu11-64 == \Z\u\l\u\1\1\-\3\2 ]] + [[ Zulu11-64 == \Z\u\l\u\8\-\6\4 ]] + [[ Zulu11-64 == \Z\u\l\u\1\1\-\6\4 ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:01:52_AEST [openHABian] Installing Java Zulu 11 64-Bit OpenJDK... ' 2020-12-28_09:01:52_AEST [openHABian] Installing Java Zulu 11 64-Bit OpenJDK... + openhab_is_running + openhab_is_installed + openhab2_is_installed ++ dpkg -s openhab2 ++ grep Status ++ cut '-d ' -f2 + [[ '' == \i\n\s\t\a\l\l ]] + return 1 + openhab3_is_installed ++ dpkg -s openhab ++ grep Status ++ cut '-d ' -f2 + [[ '' == \i\n\s\t\a\l\l ]] + return 1 + return 1 + return 1 + cond_redirect java_alternatives_reset + [[ -n '' ]] + echo -e '\n\033[90;01m$ java_alternatives_reset \033[39;49;00m' $ java_alternatives_reset + java_alternatives_reset + update-alternatives --quiet --remove-all java + update-alternatives --quiet --remove-all jjs + update-alternatives --quiet --remove-all keytool + update-alternatives --quiet --remove-all pack200 + update-alternatives --quiet --remove-all rmid + update-alternatives --quiet --remove-all rmiregistry + update-alternatives --quiet --remove-all unpack200 + update-alternatives --quiet --remove-all jexec + update-alternatives --quiet --remove-all javac + return 2 + cond_redirect update-alternatives --install /usr/bin/java java /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/java 1000000 + [[ -n '' ]] + echo -e '\n\033[90;01m$ update-alternatives --install /usr/bin/java java /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/java 1000000 \033[39;49;00m' $ update-alternatives --install /usr/bin/java java /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/java 1000000 + update-alternatives --install /usr/bin/java java /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/java 1000000 update-alternatives: using /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/java to provide /usr/bin/java (java) in auto mode + return 0 + cond_redirect update-alternatives --install /usr/bin/jjs jjs /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/jjs 1000000 + [[ -n '' ]] + echo -e '\n\033[90;01m$ update-alternatives --install /usr/bin/jjs jjs /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/jjs 1000000 \033[39;49;00m' $ update-alternatives --install /usr/bin/jjs jjs /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/jjs 1000000 + update-alternatives --install /usr/bin/jjs jjs /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/jjs 1000000 update-alternatives: using /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/jjs to provide /usr/bin/jjs (jjs) in auto mode + return 0 + cond_redirect update-alternatives --install /usr/bin/keytool keytool /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/keytool 1000000 + [[ -n '' ]] + echo -e '\n\033[90;01m$ update-alternatives --install /usr/bin/keytool keytool /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/keytool 1000000 \033[39;49;00m' $ update-alternatives --install /usr/bin/keytool keytool /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/keytool 1000000 + update-alternatives --install /usr/bin/keytool keytool /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/keytool 1000000 update-alternatives: using /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode + return 0 + cond_redirect update-alternatives --install /usr/bin/pack200 pack200 /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/pack200 1000000 + [[ -n '' ]] + echo -e '\n\033[90;01m$ update-alternatives --install /usr/bin/pack200 pack200 /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/pack200 1000000 \033[39;49;00m' $ update-alternatives --install /usr/bin/pack200 pack200 /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/pack200 1000000 + update-alternatives --install /usr/bin/pack200 pack200 /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/pack200 1000000 update-alternatives: using /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/pack200 to provide /usr/bin/pack200 (pack200) in auto mode + return 0 + cond_redirect update-alternatives --install /usr/bin/rmid rmid /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/rmid 1000000 + [[ -n '' ]] + echo -e '\n\033[90;01m$ update-alternatives --install /usr/bin/rmid rmid /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/rmid 1000000 \033[39;49;00m' $ update-alternatives --install /usr/bin/rmid rmid /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/rmid 1000000 + update-alternatives --install /usr/bin/rmid rmid /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/rmid 1000000 update-alternatives: using /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/rmid to provide /usr/bin/rmid (rmid) in auto mode + return 0 + cond_redirect update-alternatives --install /usr/bin/rmiregistry rmiregistry /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/rmiregistry 1000000 + [[ -n '' ]] + echo -e '\n\033[90;01m$ update-alternatives --install /usr/bin/rmiregistry rmiregistry /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/rmiregistry 1000000 \033[39;49;00m' $ update-alternatives --install /usr/bin/rmiregistry rmiregistry /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/rmiregistry 1000000 + update-alternatives --install /usr/bin/rmiregistry rmiregistry /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/rmiregistry 1000000 update-alternatives: using /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode + return 0 + cond_redirect update-alternatives --install /usr/bin/unpack200 unpack200 /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/unpack200 1000000 + [[ -n '' ]] + echo -e '\n\033[90;01m$ update-alternatives --install /usr/bin/unpack200 unpack200 /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/unpack200 1000000 \033[39;49;00m' $ update-alternatives --install /usr/bin/unpack200 unpack200 /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/unpack200 1000000 + update-alternatives --install /usr/bin/unpack200 unpack200 /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/unpack200 1000000 update-alternatives: using /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/unpack200 to provide /usr/bin/unpack200 (unpack200) in auto mode + return 0 + cond_redirect update-alternatives --install /usr/bin/jexec jexec /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/lib/jexec 1000000 + [[ -n '' ]] + echo -e '\n\033[90;01m$ update-alternatives --install /usr/bin/jexec jexec /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/lib/jexec 1000000 \033[39;49;00m' $ update-alternatives --install /usr/bin/jexec jexec /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/lib/jexec 1000000 + update-alternatives --install /usr/bin/jexec jexec /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/lib/jexec 1000000 update-alternatives: using /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode + return 0 + [[ Zulu11-64 == \Z\u\l\u\8* ]] + [[ Zulu11-64 == \Z\u\l\u\1\1* ]] + echo /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/lib + echo /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/lib/jli + echo /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/lib/client + ldconfig + echo OK OK + java_zulu_install_crypto_extension + [[ -n '' ]] + local jdkSecurity + local policyTempLocation ++ realpath /usr/bin/java ++ sed 's|/java||' + jdkSecurity=/opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/../lib/security ++ mktemp -d /tmp/openhabian.XXXXX + policyTempLocation=/tmp/openhabian.YjJik ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:01:52_AEST [openHABian] Installing Java Zulu CEK to enable unlimited cipher strength... ' 2020-12-28_09:01:52_AEST [openHABian] Installing Java Zulu CEK to enable unlimited cipher strength... + cond_redirect mkdir -p /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/../lib/security + [[ -n '' ]] + echo -e '\n\033[90;01m$ mkdir -p /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/../lib/security \033[39;49;00m' $ mkdir -p /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/../lib/security + mkdir -p /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/../lib/security + return 0 + cond_redirect wget -qO /tmp/openhabian.YjJik/crypto.zip https://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip + [[ -n '' ]] + echo -e '\n\033[90;01m$ wget -qO /tmp/openhabian.YjJik/crypto.zip https://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip \033[39;49;00m' $ wget -qO /tmp/openhabian.YjJik/crypto.zip https://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip + wget -qO /tmp/openhabian.YjJik/crypto.zip https://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip + return 0 + cond_redirect unzip /tmp/openhabian.YjJik/crypto.zip -d /tmp/openhabian.YjJik + [[ -n '' ]] + echo -e '\n\033[90;01m$ unzip /tmp/openhabian.YjJik/crypto.zip -d /tmp/openhabian.YjJik \033[39;49;00m' $ unzip /tmp/openhabian.YjJik/crypto.zip -d /tmp/openhabian.YjJik + unzip /tmp/openhabian.YjJik/crypto.zip -d /tmp/openhabian.YjJik Archive: /tmp/openhabian.YjJik/crypto.zip creating: /tmp/openhabian.YjJik/ZuluJCEPolicies/ inflating: /tmp/openhabian.YjJik/ZuluJCEPolicies/LICENSE inflating: /tmp/openhabian.YjJik/ZuluJCEPolicies/README.txt inflating: /tmp/openhabian.YjJik/ZuluJCEPolicies/DISCLAIMER inflating: /tmp/openhabian.YjJik/ZuluJCEPolicies/local_policy.jar inflating: /tmp/openhabian.YjJik/ZuluJCEPolicies/US_export_policy.jar + return 0 + cond_redirect cp -u /tmp/openhabian.YjJik/ZuluJCEPolicies/local_policy.jar /tmp/openhabian.YjJik/ZuluJCEPolicies/US_export_policy.jar /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/../lib/security + [[ -n '' ]] + echo -e '\n\033[90;01m$ cp -u /tmp/openhabian.YjJik/ZuluJCEPolicies/local_policy.jar /tmp/openhabian.YjJik/ZuluJCEPolicies/US_export_policy.jar /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/../lib/security \033[39;49;00m' $ cp -u /tmp/openhabian.YjJik/ZuluJCEPolicies/local_policy.jar /tmp/openhabian.YjJik/ZuluJCEPolicies/US_export_policy.jar /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/../lib/security + cp -u /tmp/openhabian.YjJik/ZuluJCEPolicies/local_policy.jar /tmp/openhabian.YjJik/ZuluJCEPolicies/US_export_policy.jar /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/../lib/security + return 0 + echo OK OK + cond_redirect rm -rf /tmp/openhabian.YjJik + [[ -n '' ]] + echo -e '\n\033[90;01m$ rm -rf /tmp/openhabian.YjJik \033[39;49;00m' $ rm -rf /tmp/openhabian.YjJik + rm -rf /tmp/openhabian.YjJik + return 0 + openhab_is_installed + openhab2_is_installed ++ dpkg -s openhab2 ++ grep Status ++ cut '-d ' -f2 + [[ '' == \i\n\s\t\a\l\l ]] + return 1 + openhab3_is_installed ++ dpkg -s openhab ++ grep Status ++ cut '-d ' -f2 + [[ '' == \i\n\s\t\a\l\l ]] + return 1 + return 1 + [[ Zulu11-64 == \A\d\o\p\t\1\1 ]] + [[ Zulu11-64 != \A\d\o\p\t\1\1 ]] ++ java -version + [[ openjdk version "11.0.9" 2020-10-20 LTS OpenJDK Runtime Environment Zulu11.43+88-CA (build 11.0.9+11-LTS) OpenJDK 64-Bit Server VM Zulu11.43+88-CA (build 11.0.9+11-LTS, mixed mode) == *\A\d\o\p\t\O\p\e\n\J\D\K* ]] + [[ Zulu11-64 == \Z\u\l\u\8\-\6\4 ]] + [[ Zulu11-64 == \Z\u\l\u\1\1\-\6\4 ]] + is_aarch64 + [[ '' == \a\a\r\c\h\6\4 ]] + [[ '' == \a\r\m\6\4 ]] + case "$(uname -m)" in ++ uname -m + return 0 ++ getconf LONG_BIT + [[ 64 == 64 ]] + is_x86_64 + [[ '' == \x\8\6\_\6\4 ]] + [[ '' == \a\m\d\6\4 ]] + case "$(uname -m)" in ++ uname -m + return 1 + [[ Zulu11-64 == \Z\u\l\u\8\-\6\4 ]] + [[ Zulu11-64 == \Z\u\l\u\1\1\-\6\4 ]] + cond_redirect java_zulu_update_available Zulu11-64 + [[ -n '' ]] + echo -e '\n\033[90;01m$ java_zulu_update_available Zulu11-64 \033[39;49;00m' $ java_zulu_update_available Zulu11-64 + java_zulu_update_available Zulu11-64 ++ command -v java + [[ -x /usr/bin/java ]] + local availableVersion + local filter8 + local filter11 + local javaArch + local javaVersion + local jdkBin + local link + local requestedArch ++ command -v jq + [[ -x /usr/bin/jq ]] + filter8='[.zulu_version[] | tostring] | join(".")' + filter11='[.jdk_version[] | tostring] | join(".")' ++ find /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin ... -print -quit + jdkBin=/opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin ++ /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/java -version ++ grep -m 1 -o '[0-9]\{0,3\}\.[0-9]\{0,3\}\.[0-9]\{0,3\}[\.+][0-9]\{0,3\}' ++ head -1 ++ sed 's|+|.|g' + javaVersion=11.0.9.11 + link='https://api.azul.com/zulu/download/community/v1.0/bundles/latest/?os=linux&ext=tar.gz&javafx=false' + [[ Zulu11-64 == \Z\u\l\u\8\-\3\2 ]] + [[ Zulu11-64 == \Z\u\l\u\1\1\-\3\2 ]] + [[ Zulu11-64 == \Z\u\l\u\8\-\6\4 ]] + [[ Zulu11-64 == \Z\u\l\u\1\1\-\6\4 ]] + is_arm + is_armv6l + [[ '' == \a\r\m\v\6\l ]] + case "$(uname -m)" in ++ uname -m + return 1 + is_armv7l + [[ '' == \a\r\m\v\7\l ]] + case "$(uname -m)" in ++ uname -m + return 1 + is_aarch64 + [[ '' == \a\a\r\c\h\6\4 ]] + [[ '' == \a\r\m\6\4 ]] + case "$(uname -m)" in ++ uname -m + return 0 + return 0 + requestedArch=aarch64 ++ curl -s -H 'Accept: application/json' 'https://api.azul.com/zulu/download/community/v1.0/bundles/latest/?os=linux&ext=tar.gz&javafx=false&jdk_version=11&arch=arm&hw_bitness=64' ++ jq -r '[.jdk_version[] | tostring] | join(".")' + availableVersion=11.0.9.11 + [[ -z aarch64 ]] + [[ -z 11.0.9.11 ]] + [[ /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin == *\a\a\r\c\h\3\2\h\f* ]] + [[ /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin == *\i\6\8\6* ]] + [[ /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin == *\a\a\r\c\h\6\4* ]] + javaArch=aarch64 + [[ /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin == *\x\6\4* ]] + [[ 11.0.9.11 == \1\1\.\0\.\9\.\1\1 ]] + [[ aarch64 == \a\a\r\c\h\6\4 ]] + return 1 + return 1 ++ command -v java + [[ -x /usr/bin/java ]] + cond_redirect java -version + [[ -n '' ]] + echo -e '\n\033[90;01m$ java -version \033[39;49;00m' $ java -version + java -version openjdk version "11.0.9" 2020-10-20 LTS OpenJDK Runtime Environment Zulu11.43+88-CA (build 11.0.9+11-LTS) OpenJDK 64-Bit Server VM Zulu11.43+88-CA (build 11.0.9+11-LTS, mixed mode) + return 0 + openhab_setup openHAB3 stable + local introText + local successText + local repo + local openhabVersion + [[ openHAB3 == \o\p\e\n\H\A\B\3 ]] + ohPkgName=openhab + [[ stable == \u\n\s\t\a\b\l\e ]] + [[ stable == \s\t\a\b\l\e ]] + introText='You are about to install or change to the latest stable openHAB3 release.\n\nPlease be aware that downgrading from a newer unstable snapshot build is not officially supported. Please consult with the documentation or community forum and be sure to take a full openHAB configuration backup first!' + successText='The stable release of openHAB3 is now installed on your system.\n\nPlease test the correct behavior of your setup. You might need to adapt your configuration, if available. If you made changes to the files in '\''/var/lib/openhab'\'' they were replaced, but you can restore them from backup files next to the originals.\n\nCheck the "openHAB Release Notes" and the official announcements to learn about additons, fixes and changes.' + repo='deb https://dl.bintray.com/openhab/apt-repo2 stable main' + [[ stable == \u\n\s\t\a\b\l\e ]] + [[ stable == \s\t\a\b\l\e ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:01:56_AEST [openHABian] Beginning install of latest openHAB3 release (stable)... ' 2020-12-28_09:01:56_AEST [openHABian] Beginning install of latest openHAB3 release (stable)... + [[ -n '' ]] + echo OK OK + running_in_docker + grep -qs 'docker\|lxc' /proc/1/cgroup + [[ -f /.dockerenv ]] + return 1 + [[ -z '' ]] + add_keys 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' + local repoKey ++ mktemp /tmp/openhabian.XXXXX + repoKey=/tmp/openhabian.4tcCL ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:01:56_AEST [openHABian] Adding required keys to apt... ' 2020-12-28_09:01:56_AEST [openHABian] Adding required keys to apt... + cond_redirect wget -qO /tmp/openhabian.4tcCL 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' + [[ -n '' ]] + echo -e '\n\033[90;01m$ wget -qO /tmp/openhabian.4tcCL https://bintray.com/user/downloadSubjectPublicKey?username=openhab \033[39;49;00m' $ wget -qO /tmp/openhabian.4tcCL https://bintray.com/user/downloadSubjectPublicKey?username=openhab + wget -qO /tmp/openhabian.4tcCL 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' + return 0 + cond_redirect apt-key add /tmp/openhabian.4tcCL + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-key add /tmp/openhabian.4tcCL \033[39;49;00m' $ apt-key add /tmp/openhabian.4tcCL + apt-key add /tmp/openhabian.4tcCL Warning: apt-key output should not be parsed (stdout is not a terminal) OK + return 0 + echo OK OK + rm -f /tmp/openhabian.4tcCL + rm -f /etc/apt/sources.list.d/openhab2.list + echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:01:59_AEST [openHABian] Installing selected openHAB3 version... ' 2020-12-28_09:01:59_AEST [openHABian] Installing selected openHAB3 version... + cond_redirect apt-get update + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get update \033[39;49;00m' $ apt-get update + apt-get update Hit:1 http://deb.debian.org/debian buster InRelease Hit:2 http://deb.debian.org/debian-security buster/updates InRelease Hit:3 http://deb.debian.org/debian buster-updates InRelease Hit:4 http://davesteele.github.io/comitup/repo comitup InRelease Hit:5 https://deb.nodesource.com/node_12.x buster InRelease Hit:6 http://archive.raspberrypi.org/debian buster InRelease Ign:7 https://dl.bintray.com/openhab/apt-repo2 stable InRelease Get:8 https://dl.bintray.com/openhab/apt-repo2 stable Release [6,051 B] Fetched 6,051 B in 2s (2,982 B/s) Reading package lists... + return 0 ++ apt-cache madison openhab ++ head -n 1 ++ cut '-d|' -f2 ++ xargs + openhabVersion=3.0.0-1 + cond_redirect apt-get install --allow-downgrades --yes --option Dpkg::Options::=--force-confnew openhab=3.0.0-1 openhab-addons=3.0.0-1 + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get install --allow-downgrades --yes --option Dpkg::Options::=--force-confnew openhab=3.0.0-1 openhab-addons=3.0.0-1 \033[39;49;00m' $ apt-get install --allow-downgrades --yes --option Dpkg::Options::=--force-confnew openhab=3.0.0-1 openhab-addons=3.0.0-1 + apt-get install --allow-downgrades --yes --option Dpkg::Options::=--force-confnew openhab=3.0.0-1 openhab-addons=3.0.0-1 Reading package lists... Building dependency tree... Reading state information... The following package was automatically installed and is no longer required: triggerhappy Use 'apt autoremove' to remove it. Suggested packages: default-jre | java11-runtime | java11-runtime-headless The following NEW packages will be installed: openhab openhab-addons 0 upgraded, 2 newly installed, 0 to remove and 1 not upgraded. Need to get 0 B/296 MB of archives. After this operation, 307 MB of additional disk space will be used. Selecting previously unselected package openhab. (Reading database ... 50853 files and directories currently installed.) Preparing to unpack .../openhab_3.0.0-1_all.deb ... Unpacking openhab (3.0.0-1) ... Selecting previously unselected package openhab-addons. Preparing to unpack .../openhab-addons_3.0.0-1_all.deb ... Unpacking openhab-addons (3.0.0-1) ... Setting up openhab (3.0.0-1) ... [openHAB] Please use the following commands to launch openHAB on a system restart. sudo /bin/systemctl daemon-reload sudo /bin/systemctl enable openhab.service [openHAB] You can start openHAB manually by executing the command: sudo /bin/systemctl start openhab.service Setting up openhab-addons (3.0.0-1) ... Processing triggers for systemd (241-7~deb10u5) ... Updating FireMotD available updates count ... + return 0 + echo OK OK ++ id -g openhabian + gid=1001 + cond_redirect usermod -g openhab openhabian + cond_redirect usermod -aG 1001 openhabian ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:00_AEST [openHABian] Setting up openHAB service... ' 2020-12-28_09:04:00_AEST [openHABian] Setting up openHAB service... + cond_redirect systemctl -q daemon-reload + cond_redirect systemctl enable openhab.service + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl enable openhab.service \033[39;49;00m' $ systemctl enable openhab.service + systemctl enable openhab.service Created symlink /etc/systemd/system/multi-user.target.wants/openhab.service → /usr/lib/systemd/system/openhab.service. + return 0 + echo OK OK + openhab_misc + is_arm + is_armv6l + [[ '' == \a\r\m\v\6\l ]] + case "$(uname -m)" in ++ uname -m + return 1 + is_armv7l + [[ '' == \a\r\m\v\7\l ]] + case "$(uname -m)" in ++ uname -m + return 1 + is_aarch64 + [[ '' == \a\a\r\c\h\6\4 ]] + [[ '' == \a\r\m\6\4 ]] + case "$(uname -m)" in ++ uname -m + return 0 + return 0 ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:01_AEST [openHABian] Optimizing openHAB to run on low memory single board computers... ' 2020-12-28_09:04:01_AEST [openHABian] Optimizing openHAB to run on low memory single board computers... + has_lowmem + local totalMemory ++ awk '/MemTotal/ {print $2}' /proc/meminfo + totalMemory=8003320 + [[ -z 8003320 ]] + [[ 8003320 -lt 900000 ]] + return 1 + cond_redirect sed -i -e 's|^EXTRA_JAVA_OPTS=.*$|EXTRA_JAVA_OPTS="-Xms192m -Xmx320m"|g' /etc/default/openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ sed -i -e s|^EXTRA_JAVA_OPTS=.*$|EXTRA_JAVA_OPTS="-Xms192m -Xmx320m"|g /etc/default/openhab \033[39;49;00m' $ sed -i -e s|^EXTRA_JAVA_OPTS=.*$|EXTRA_JAVA_OPTS="-Xms192m -Xmx320m"|g /etc/default/openhab + sed -i -e 's|^EXTRA_JAVA_OPTS=.*$|EXTRA_JAVA_OPTS="-Xms192m -Xmx320m"|g' /etc/default/openhab + return 0 + echo OK OK ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:01_AEST [openHABian] Setting openHAB HTTP/HTTPS ports... ' 2020-12-28_09:04:01_AEST [openHABian] Setting openHAB HTTP/HTTPS ports... + cond_redirect sed -i -e 's|^#*.*OPENHAB_HTTP_PORT=.*$|OPENHAB_HTTP_PORT=8080|g' /etc/default/openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ sed -i -e s|^#*.*OPENHAB_HTTP_PORT=.*$|OPENHAB_HTTP_PORT=8080|g /etc/default/openhab \033[39;49;00m' $ sed -i -e s|^#*.*OPENHAB_HTTP_PORT=.*$|OPENHAB_HTTP_PORT=8080|g /etc/default/openhab + sed -i -e 's|^#*.*OPENHAB_HTTP_PORT=.*$|OPENHAB_HTTP_PORT=8080|g' /etc/default/openhab + return 0 + cond_redirect sed -i -e 's|^#*.*OPENHAB_HTTPS_PORT=.*$|OPENHAB_HTTPS_PORT=8443|g' /etc/default/openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ sed -i -e s|^#*.*OPENHAB_HTTPS_PORT=.*$|OPENHAB_HTTPS_PORT=8443|g /etc/default/openhab \033[39;49;00m' $ sed -i -e s|^#*.*OPENHAB_HTTPS_PORT=.*$|OPENHAB_HTTPS_PORT=8443|g /etc/default/openhab + sed -i -e 's|^#*.*OPENHAB_HTTPS_PORT=.*$|OPENHAB_HTTPS_PORT=8443|g' /etc/default/openhab + return 0 + echo OK OK + create_systemd_dependencies + local targetDir=/etc/systemd/system/openhab.service.d ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:01_AEST [openHABian] Creating dependencies to jointly start services that depend on each other... ' 2020-12-28_09:04:01_AEST [openHABian] Creating dependencies to jointly start services that depend on each other... + cond_redirect mkdir -p /etc/systemd/system/openhab.service.d + [[ -n '' ]] + echo -e '\n\033[90;01m$ mkdir -p /etc/systemd/system/openhab.service.d \033[39;49;00m' $ mkdir -p /etc/systemd/system/openhab.service.d + mkdir -p /etc/systemd/system/openhab.service.d + return 0 + cond_redirect rm -f /etc/systemd/system/openhab.service.d/override.conf + [[ -n '' ]] + echo -e '\n\033[90;01m$ rm -f /etc/systemd/system/openhab.service.d/override.conf \033[39;49;00m' $ rm -f /etc/systemd/system/openhab.service.d/override.conf + rm -f /etc/systemd/system/openhab.service.d/override.conf + return 0 + cond_redirect cp /opt/openhabian/includes/openhab-override.conf /etc/systemd/system/openhab.service.d/override.conf + [[ -n '' ]] + echo -e '\n\033[90;01m$ cp /opt/openhabian/includes/openhab-override.conf /etc/systemd/system/openhab.service.d/override.conf \033[39;49;00m' $ cp /opt/openhabian/includes/openhab-override.conf /etc/systemd/system/openhab.service.d/override.conf + cp /opt/openhabian/includes/openhab-override.conf /etc/systemd/system/openhab.service.d/override.conf + return 0 + echo OK OK + cond_redirect systemctl -q daemon-reload + [[ openHAB3 == \o\p\e\n\H\A\B\3 ]] + delayed_rules yno + openhab_is_installed + openhab2_is_installed ++ dpkg -s openhab2 ++ grep Status ++ cut '-d ' -f2 + [[ '' == \i\n\s\t\a\l\l ]] + return 1 + openhab3_is_installed ++ dpkg -s openhab ++ grep Status ++ cut '-d ' -f2 + [[ install == \i\n\s\t\a\l\l ]] + return 0 + return 0 + local targetDir=/etc/systemd/system/openhab.service.d + [[ yno == \y\e\s ]] + [[ yno == \n\o ]] + cond_redirect systemctl -q daemon-reload + dashboard_add_tile openhabiandocs + local application + local dashboardConfig + local openhabConfig + local tileDesc + local tileImg + local tileURL + application=openhabiandocs + openhabConfig=/etc/openhab + dashboardConfig=/etc/openhab/services/dashboard.cfg ++ sed 's|tile_desc_openhabiandocs=||g; s|"||g' ++ grep '^[[:space:]]*tile_desc_openhabiandocs' /opt/openhabian/includes/dashboard-imagedata + tileDesc='openHABian Help' ++ grep '^[[:space:]]*tile_imagedata_openhabiandocs' /opt/openhabian/includes/dashboard-imagedata ++ sed 's|tile_imagedata_openhabiandocs=||g; s|"||g' + tileImg='data:image/png;base64,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' ++ sed 's|tile_url_openhabiandocs=||g; s|"||g' ++ grep '^[[:space:]]*tile_url_openhabiandocs' /opt/openhabian/includes/dashboard-imagedata + tileURL=https://www.openhab.org/docs/installation/openhabian.html ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:02_AEST [openHABian] Adding an openHAB dashboard tile for '\''openhabiandocs'\''... ' 2020-12-28_09:04:02_AEST [openHABian] Adding an openHAB dashboard tile for 'openhabiandocs'... + case $application in + true + openhab_is_installed + openhab2_is_installed ++ dpkg -s openhab2 ++ cut '-d ' -f2 ++ grep Status + [[ '' == \i\n\s\t\a\l\l ]] + return 1 + openhab3_is_installed ++ dpkg -s openhab ++ grep Status ++ cut '-d ' -f2 + [[ install == \i\n\s\t\a\l\l ]] + return 0 + return 0 + [[ -d /etc/openhab/services ]] + touch /etc/openhab/services/dashboard.cfg + grep -qs openhabiandocs.link /etc/openhab/services/dashboard.cfg + [[ -z openHABian Help ]] + [[ -z https://www.openhab.org/docs/installation/openhabian.html ]] + [[ -z data:image/png;base64,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 ]] + echo -e '\nopenhabiandocs.link-name=openHABian Help\nopenhabiandocs.link-url=https://www.openhab.org/docs/installation/openhabian.html\nopenhabiandocs.link-imageurl=data:image/png;base64,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' + echo OK OK + cond_redirect systemctl restart openhab.service + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl restart openhab.service \033[39;49;00m' $ systemctl restart openhab.service + systemctl restart openhab.service + return 0 + echo OK OK + [[ -n '' ]] + vim_openhab_syntax ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:02_AEST [openHABian] Adding openHAB syntax to vim editor... ' 2020-12-28_09:04:02_AEST [openHABian] Adding openHAB syntax to vim editor... + cond_redirect mkdir -p /home/openhabian/.vim/ftdetect /home/openhabian/.vim/syntax + [[ -n '' ]] + echo -e '\n\033[90;01m$ mkdir -p /home/openhabian/.vim/ftdetect /home/openhabian/.vim/syntax \033[39;49;00m' $ mkdir -p /home/openhabian/.vim/ftdetect /home/openhabian/.vim/syntax + mkdir -p /home/openhabian/.vim/ftdetect /home/openhabian/.vim/syntax + return 0 + cond_redirect wget -O /home/openhabian/.vim/syntax/openhab.vim https://github.com/cyberkov/openhab-vim/raw/master/syntax/openhab.vim + [[ -n '' ]] + echo -e '\n\033[90;01m$ wget -O /home/openhabian/.vim/syntax/openhab.vim https://github.com/cyberkov/openhab-vim/raw/master/syntax/openhab.vim \033[39;49;00m' $ wget -O /home/openhabian/.vim/syntax/openhab.vim https://github.com/cyberkov/openhab-vim/raw/master/syntax/openhab.vim + wget -O /home/openhabian/.vim/syntax/openhab.vim https://github.com/cyberkov/openhab-vim/raw/master/syntax/openhab.vim --2020-12-28 09:04:02-- https://github.com/cyberkov/openhab-vim/raw/master/syntax/openhab.vim Resolving github.com (github.com)... 13.237.44.5 Connecting to github.com (github.com)|13.237.44.5|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://raw.githubusercontent.com/cyberkov/openhab-vim/master/syntax/openhab.vim [following] --2020-12-28 09:04:02-- https://raw.githubusercontent.com/cyberkov/openhab-vim/master/syntax/openhab.vim Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.192.133, 151.101.64.133, 151.101.0.133, ... Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.192.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 6065 (5.9K) [text/plain] Saving to: ‘/home/openhabian/.vim/syntax/openhab.vim’ 0K ..... 100% 7.26M=0.001s 2020-12-28 09:04:03 (7.26 MB/s) - ‘/home/openhabian/.vim/syntax/openhab.vim’ saved [6065/6065] + return 0 + cond_redirect wget -O /home/openhabian/.vim/ftdetect/openhab.vim https://github.com/cyberkov/openhab-vim/raw/master/ftdetect/openhab.vim + [[ -n '' ]] + echo -e '\n\033[90;01m$ wget -O /home/openhabian/.vim/ftdetect/openhab.vim https://github.com/cyberkov/openhab-vim/raw/master/ftdetect/openhab.vim \033[39;49;00m' $ wget -O /home/openhabian/.vim/ftdetect/openhab.vim https://github.com/cyberkov/openhab-vim/raw/master/ftdetect/openhab.vim + wget -O /home/openhabian/.vim/ftdetect/openhab.vim https://github.com/cyberkov/openhab-vim/raw/master/ftdetect/openhab.vim --2020-12-28 09:04:03-- https://github.com/cyberkov/openhab-vim/raw/master/ftdetect/openhab.vim Resolving github.com (github.com)... 13.237.44.5 Connecting to github.com (github.com)|13.237.44.5|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://raw.githubusercontent.com/cyberkov/openhab-vim/master/ftdetect/openhab.vim [following] --2020-12-28 09:04:03-- https://raw.githubusercontent.com/cyberkov/openhab-vim/master/ftdetect/openhab.vim Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.128.133, 151.101.192.133, 151.101.64.133, ... Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.128.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 661 [text/plain] Saving to: ‘/home/openhabian/.vim/ftdetect/openhab.vim’ 0K 100% 11.3M=0s 2020-12-28 09:04:03 (11.3 MB/s) - ‘/home/openhabian/.vim/ftdetect/openhab.vim’ saved [661/661] + return 0 + chown -R openhabian:openhabian /home/openhabian/.vim + echo OK OK + nano_openhab_syntax ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:03_AEST [openHABian] Adding openHAB syntax to nano editor... ' 2020-12-28_09:04:03_AEST [openHABian] Adding openHAB syntax to nano editor... + cond_redirect wget -O /usr/share/nano/openhab.nanorc https://github.com/airix1/openhabnano/raw/master/openhab.nanorc + [[ -n '' ]] + echo -e '\n\033[90;01m$ wget -O /usr/share/nano/openhab.nanorc https://github.com/airix1/openhabnano/raw/master/openhab.nanorc \033[39;49;00m' $ wget -O /usr/share/nano/openhab.nanorc https://github.com/airix1/openhabnano/raw/master/openhab.nanorc + wget -O /usr/share/nano/openhab.nanorc https://github.com/airix1/openhabnano/raw/master/openhab.nanorc --2020-12-28 09:04:03-- https://github.com/airix1/openhabnano/raw/master/openhab.nanorc Resolving github.com (github.com)... 13.237.44.5 Connecting to github.com (github.com)|13.237.44.5|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://raw.githubusercontent.com/airix1/openhabnano/master/openhab.nanorc [following] --2020-12-28 09:04:03-- https://raw.githubusercontent.com/airix1/openhabnano/master/openhab.nanorc Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.64.133, 151.101.192.133, 151.101.0.133, ... Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.64.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 2321 (2.3K) [text/plain] Saving to: ‘/usr/share/nano/openhab.nanorc’ 0K .. 100% 9.12M=0s 2020-12-28 09:04:03 (9.12 MB/s) - ‘/usr/share/nano/openhab.nanorc’ saved [2321/2321] + return 0 + echo -e '\n## openHAB syntax\ninclude "/usr/share/nano/openhab.nanorc"' + echo OK OK + multitail_openhab_scheme ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:03_AEST [openHABian] Adding openHAB scheme to multitail... ' 2020-12-28_09:04:03_AEST [openHABian] Adding openHAB scheme to multitail... + cp /opt/openhabian/includes/multitail.openhab.conf /etc/multitail.openhab.conf + cond_redirect sed -i -e '/^.*multitail.*openhab.*$/d' /etc/multitail.conf + [[ -n '' ]] + echo -e '\n\033[90;01m$ sed -i -e /^.*multitail.*openhab.*$/d /etc/multitail.conf \033[39;49;00m' $ sed -i -e /^.*multitail.*openhab.*$/d /etc/multitail.conf + sed -i -e '/^.*multitail.*openhab.*$/d' /etc/multitail.conf + return 0 + cond_redirect sed -i -e 's|^# misc.*$|# openHAB logs\\ninclude:/etc/multitail.openhab.conf\\n#\\n# misc|g' /etc/multitail.conf + [[ -n '' ]] + echo -e '\n\033[90;01m$ sed -i -e s|^# misc.*$|# openHAB logs\\ninclude:/etc/multitail.openhab.conf\\n#\\n# misc|g /etc/multitail.conf \033[39;49;00m' $ sed -i -e s|^# misc.*$|# openHAB logs\ninclude:/etc/multitail.openhab.conf\n#\n# misc|g /etc/multitail.conf + sed -i -e 's|^# misc.*$|# openHAB logs\\ninclude:/etc/multitail.openhab.conf\\n#\\n# misc|g' /etc/multitail.conf + return 0 + echo OK OK + srv_bind_mounts + [[ -f /etc/ztab ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:04_AEST [openHABian] Preparing openHAB folder mounts under '\''/srv/openhab-*'\''... ' 2020-12-28_09:04:04_AEST [openHABian] Preparing openHAB folder mounts under '/srv/openhab-*'... + cond_redirect umount -q /srv/openhab-sys /srv/openhab-conf /srv/openhab-userdata /srv/openhab-addons + [[ -n '' ]] + echo -e '\n\033[90;01m$ umount -q /srv/openhab-sys /srv/openhab-conf /srv/openhab-userdata /srv/openhab-addons \033[39;49;00m' $ umount -q /srv/openhab-sys /srv/openhab-conf /srv/openhab-userdata /srv/openhab-addons + umount -q /srv/openhab-sys /srv/openhab-conf /srv/openhab-userdata /srv/openhab-addons umount: /srv/openhab-sys: no mount point specified. umount: /srv/openhab-conf: no mount point specified. umount: /srv/openhab-userdata: no mount point specified. umount: /srv/openhab-addons: no mount point specified. + return 128 + cond_redirect rm -f '/etc/systemd/system/srv*.mount' + [[ -n '' ]] + echo -e '\n\033[90;01m$ rm -f /etc/systemd/system/srv*.mount \033[39;49;00m' $ rm -f /etc/systemd/system/srv*.mount + rm -f '/etc/systemd/system/srv*.mount' + return 0 + cond_redirect mkdir -p /srv/openhab-sys /srv/openhab-conf /srv/openhab-userdata /srv/openhab-addons + [[ -n '' ]] + echo -e '\n\033[90;01m$ mkdir -p /srv/openhab-sys /srv/openhab-conf /srv/openhab-userdata /srv/openhab-addons \033[39;49;00m' $ mkdir -p /srv/openhab-sys /srv/openhab-conf /srv/openhab-userdata /srv/openhab-addons + mkdir -p /srv/openhab-sys /srv/openhab-conf /srv/openhab-userdata /srv/openhab-addons + return 0 + cond_redirect cp /opt/openhabian/includes/srv_readme.txt /srv/README.txt + [[ -n '' ]] + echo -e '\n\033[90;01m$ cp /opt/openhabian/includes/srv_readme.txt /srv/README.txt \033[39;49;00m' $ cp /opt/openhabian/includes/srv_readme.txt /srv/README.txt + cp /opt/openhabian/includes/srv_readme.txt /srv/README.txt + return 0 + cond_redirect chmod ugo+w /srv /srv/README.txt + [[ -n '' ]] + echo -e '\n\033[90;01m$ chmod ugo+w /srv /srv/README.txt \033[39;49;00m' $ chmod ugo+w /srv /srv/README.txt + chmod ugo+w /srv /srv/README.txt + return 0 + cond_redirect create_mount /usr/share/openhab sys + [[ -n '' ]] + echo -e '\n\033[90;01m$ create_mount /usr/share/openhab sys \033[39;49;00m' $ create_mount /usr/share/openhab sys + create_mount /usr/share/openhab sys + running_in_docker + grep -qs 'docker\|lxc' /proc/1/cgroup + [[ -f /.dockerenv ]] + return 1 + local destination + local mountPoint + local source + destination=sys ++ systemd-escape --path /srv/openhab-sys --suffix mount + mountPoint='srv-openhab\x2dsys.mount' + source=/usr/share/openhab ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:04_AEST [openHABian] Creating mount /usr/share/openhab in '\''/srv/openhab-sys'\''... ' 2020-12-28_09:04:04_AEST [openHABian] Creating mount /usr/share/openhab in '/srv/openhab-sys'... + sed -e 's|%SRC|/usr/share/openhab|g; s|%DEST|sys|g' /opt/openhabian/includes/srv_mount_template + cond_redirect systemctl -q daemon-reload + cond_redirect systemctl enable --now 'srv-openhab\x2dsys.mount' + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl enable --now srv-openhab\x2dsys.mount \033[39;49;00m' $ systemctl enable --now srv-openhab-sys.mount + systemctl enable --now 'srv-openhab\x2dsys.mount' Created symlink /etc/systemd/system/multi-user.target.wants/srv-openhab\x2dsys.mount → /etc/systemd/system/srv-openhab\x2dsys.mount. + return 0 + echo OK OK + return 0 + cond_redirect create_mount /etc/openhab conf + [[ -n '' ]] + echo -e '\n\033[90;01m$ create_mount /etc/openhab conf \033[39;49;00m' $ create_mount /etc/openhab conf + create_mount /etc/openhab conf + running_in_docker + grep -qs 'docker\|lxc' /proc/1/cgroup + [[ -f /.dockerenv ]] + return 1 + local destination + local mountPoint + local source + destination=conf ++ systemd-escape --path /srv/openhab-conf --suffix mount + mountPoint='srv-openhab\x2dconf.mount' + source=/etc/openhab ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:05_AEST [openHABian] Creating mount /etc/openhab in '\''/srv/openhab-conf'\''... ' 2020-12-28_09:04:05_AEST [openHABian] Creating mount /etc/openhab in '/srv/openhab-conf'... + sed -e 's|%SRC|/etc/openhab|g; s|%DEST|conf|g' /opt/openhabian/includes/srv_mount_template + cond_redirect systemctl -q daemon-reload + cond_redirect systemctl enable --now 'srv-openhab\x2dconf.mount' + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl enable --now srv-openhab\x2dconf.mount \033[39;49;00m' $ systemctl enable --now srv-openhab-conf.mount + systemctl enable --now 'srv-openhab\x2dconf.mount' Created symlink /etc/systemd/system/multi-user.target.wants/srv-openhab\x2dconf.mount → /etc/systemd/system/srv-openhab\x2dconf.mount. + return 0 + echo OK OK + return 0 + cond_redirect create_mount /var/lib/openhab userdata + [[ -n '' ]] + echo -e '\n\033[90;01m$ create_mount /var/lib/openhab userdata \033[39;49;00m' $ create_mount /var/lib/openhab userdata + create_mount /var/lib/openhab userdata + running_in_docker + grep -qs 'docker\|lxc' /proc/1/cgroup + [[ -f /.dockerenv ]] + return 1 + local destination + local mountPoint + local source + destination=userdata ++ systemd-escape --path /srv/openhab-userdata --suffix mount + mountPoint='srv-openhab\x2duserdata.mount' + source=/var/lib/openhab ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:10_AEST [openHABian] Creating mount /var/lib/openhab in '\''/srv/openhab-userdata'\''... ' 2020-12-28_09:04:10_AEST [openHABian] Creating mount /var/lib/openhab in '/srv/openhab-userdata'... + sed -e 's|%SRC|/var/lib/openhab|g; s|%DEST|userdata|g' /opt/openhabian/includes/srv_mount_template + cond_redirect systemctl -q daemon-reload + cond_redirect systemctl enable --now 'srv-openhab\x2duserdata.mount' + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl enable --now srv-openhab\x2duserdata.mount \033[39;49;00m' $ systemctl enable --now srv-openhab-userdata.mount + systemctl enable --now 'srv-openhab\x2duserdata.mount' Created symlink /etc/systemd/system/multi-user.target.wants/srv-openhab\x2duserdata.mount → /etc/systemd/system/srv-openhab\x2duserdata.mount. + return 0 + echo OK OK + return 0 + cond_redirect create_mount /usr/share/openhab/addons addons + [[ -n '' ]] + echo -e '\n\033[90;01m$ create_mount /usr/share/openhab/addons addons \033[39;49;00m' $ create_mount /usr/share/openhab/addons addons + create_mount /usr/share/openhab/addons addons + running_in_docker + grep -qs 'docker\|lxc' /proc/1/cgroup + [[ -f /.dockerenv ]] + return 1 + local destination + local mountPoint + local source + destination=addons ++ systemd-escape --path /srv/openhab-addons --suffix mount + mountPoint='srv-openhab\x2daddons.mount' + source=/usr/share/openhab/addons ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:11_AEST [openHABian] Creating mount /usr/share/openhab/addons in '\''/srv/openhab-addons'\''... ' 2020-12-28_09:04:11_AEST [openHABian] Creating mount /usr/share/openhab/addons in '/srv/openhab-addons'... + sed -e 's|%SRC|/usr/share/openhab/addons|g; s|%DEST|addons|g' /opt/openhabian/includes/srv_mount_template + cond_redirect systemctl -q daemon-reload + cond_redirect systemctl enable --now 'srv-openhab\x2daddons.mount' + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl enable --now srv-openhab\x2daddons.mount \033[39;49;00m' $ systemctl enable --now srv-openhab-addons.mount + systemctl enable --now 'srv-openhab\x2daddons.mount' Created symlink /etc/systemd/system/multi-user.target.wants/srv-openhab\x2daddons.mount → /etc/systemd/system/srv-openhab\x2daddons.mount. + return 0 + echo OK OK + return 0 + echo OK OK + [[ -f /etc/ztab ]] + misc_system_settings ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:12_AEST [openHABian] Applying miscellaneous system settings... ' 2020-12-28_09:04:12_AEST [openHABian] Applying miscellaneous system settings... + cond_echo 'Setting Java and arping file capabilites' + [[ -z '' ]] + echo -e '\033[33;01mSetting Java and arping file capabilites\033[39;49;00m' Setting Java and arping file capabilites ++ realpath /usr/bin/java + cond_redirect setcap 'cap_net_raw,cap_net_admin=+eip cap_net_bind_service=+ep' /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/java + [[ -n '' ]] + echo -e '\n\033[90;01m$ setcap cap_net_raw,cap_net_admin=+eip cap_net_bind_service=+ep /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/java \033[39;49;00m' $ setcap cap_net_raw,cap_net_admin=+eip cap_net_bind_service=+ep /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/java + setcap 'cap_net_raw,cap_net_admin=+eip cap_net_bind_service=+ep' /opt/jdk/zulu11.43.88-ca-jdk11.0.9-linux_aarch64/bin/java + return 0 + cond_redirect setcap 'cap_net_raw,cap_net_admin=+eip cap_net_bind_service=+ep' /usr/sbin/arping + [[ -n '' ]] + echo -e '\n\033[90;01m$ setcap cap_net_raw,cap_net_admin=+eip cap_net_bind_service=+ep /usr/sbin/arping \033[39;49;00m' $ setcap cap_net_raw,cap_net_admin=+eip cap_net_bind_service=+ep /usr/sbin/arping + setcap 'cap_net_raw,cap_net_admin=+eip cap_net_bind_service=+ep' /usr/sbin/arping + return 0 + cond_echo 'Creating a README note for end user'\''s home folder' + [[ -z '' ]] + echo -e '\033[33;01mCreating a README note for end user'\''s home folder\033[39;49;00m' Creating a README note for end user's home folder + echo -e 'This is your linux user'\''s "home" folder.\nPlace personal files, programs or scripts here.' + cond_echo 'Creating SSH key files' + [[ -z '' ]] + echo -e '\033[33;01mCreating SSH key files\033[39;49;00m' Creating SSH key files + cond_redirect mkdir -p /home/openhabian/.ssh + [[ -n '' ]] + echo -e '\n\033[90;01m$ mkdir -p /home/openhabian/.ssh \033[39;49;00m' $ mkdir -p /home/openhabian/.ssh + mkdir -p /home/openhabian/.ssh + return 0 + cond_redirect chmod 700 /home/openhabian/.ssh + [[ -n '' ]] + echo -e '\n\033[90;01m$ chmod 700 /home/openhabian/.ssh \033[39;49;00m' $ chmod 700 /home/openhabian/.ssh + chmod 700 /home/openhabian/.ssh + return 0 + cond_redirect touch /home/openhabian/.ssh/authorized_keys + [[ -n '' ]] + echo -e '\n\033[90;01m$ touch /home/openhabian/.ssh/authorized_keys \033[39;49;00m' $ touch /home/openhabian/.ssh/authorized_keys + touch /home/openhabian/.ssh/authorized_keys + return 0 + cond_redirect chmod 600 /home/openhabian/.ssh/authorized_keys + [[ -n '' ]] + echo -e '\n\033[90;01m$ chmod 600 /home/openhabian/.ssh/authorized_keys \033[39;49;00m' $ chmod 600 /home/openhabian/.ssh/authorized_keys + chmod 600 /home/openhabian/.ssh/authorized_keys + return 0 + cond_redirect chown -R openhabian:openhabian /home/openhabian/.ssh + [[ -n '' ]] + echo -e '\n\033[90;01m$ chown -R openhabian:openhabian /home/openhabian/.ssh \033[39;49;00m' $ chown -R openhabian:openhabian /home/openhabian/.ssh + chown -R openhabian:openhabian /home/openhabian/.ssh + return 0 + is_raspbian + [[ '' == \r\a\s\p\b\i\a\n ]] ++ cat /etc/os-release + [[ PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" =~ Raspbian ]] + return 1 + is_raspios + [[ '' == \r\a\s\p\i\o\s ]] ++ cat /etc/os-release + [[ PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" =~ Raspberry Pi OS ]] + return 1 + cond_echo 'Setting a distinguishable apt User-Agent' + [[ -z '' ]] + echo -e '\033[33;01mSetting a distinguishable apt User-Agent\033[39;49;00m' Setting a distinguishable apt User-Agent + echo 'Acquire { http::User-Agent "Debian APT-HTTP/1.3 openHABian"; };' + echo OK OK + samba_setup + local serviceFile=/lib/systemd/system/smbd.service ++ command -v samba + [[ -x '' ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:04:12_AEST [openHABian] Installing Samba... ' 2020-12-28_09:04:12_AEST [openHABian] Installing Samba... + cond_redirect apt-get install --yes samba + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get install --yes samba \033[39;49;00m' $ apt-get install --yes samba + apt-get install --yes samba Reading package lists... Building dependency tree... Reading state information... The following package was automatically installed and is no longer required: triggerhappy Use 'apt autoremove' to remove it. The following additional packages will be installed: attr ibverbs-providers libavahi-client3 libboost-atomic1.67.0 libboost-iostreams1.67.0 libboost-regex1.67.0 libboost-system1.67.0 libboost-thread1.67.0 libcephfs2 libcups2 libgfapi0 libgfrpc0 libgfxdr0 libglusterfs0 libgpgme11 libibverbs1 libldb1 libnspr4 libnss3 libpython2.7 librados2 libtdb1 libtevent0 python-crypto python-dnspython python-gpg python-ldb python-samba python-talloc python-tdb samba-common samba-common-bin samba-dsdb-modules samba-libs samba-vfs-modules tdb-tools Suggested packages: cups-common python-crypto-doc bind9 bind9utils ctdb ldb-tools ntp | chrony smbldap-tools ufw winbind heimdal-clients The following NEW packages will be installed: attr ibverbs-providers libavahi-client3 libboost-atomic1.67.0 libboost-iostreams1.67.0 libboost-regex1.67.0 libboost-system1.67.0 libboost-thread1.67.0 libcephfs2 libcups2 libgfapi0 libgfrpc0 libgfxdr0 libglusterfs0 libgpgme11 libibverbs1 libldb1 libnspr4 libnss3 libpython2.7 librados2 libtdb1 libtevent0 python-crypto python-dnspython python-gpg python-ldb python-samba python-talloc python-tdb samba samba-common samba-common-bin samba-dsdb-modules samba-libs samba-vfs-modules tdb-tools Preconfiguring packages ... 0 upgraded, 37 newly installed, 0 to remove and 1 not upgraded. Need to get 0 B/28.1 MB of archives. After this operation, 111 MB of additional disk space will be used. Selecting previously unselected package python-dnspython. (Reading database ... 52045 files and directories currently installed.) Preparing to unpack .../00-python-dnspython_1.16.0-1_all.deb ... Unpacking python-dnspython (1.16.0-1) ... Selecting previously unselected package python-crypto. Preparing to unpack .../01-python-crypto_2.6.1-9+b1_arm64.deb ... Unpacking python-crypto (2.6.1-9+b1) ... Selecting previously unselected package libtdb1:arm64. Preparing to unpack .../02-libtdb1_1.3.16-2+b1_arm64.deb ... Unpacking libtdb1:arm64 (1.3.16-2+b1) ... Selecting previously unselected package libtevent0:arm64. Preparing to unpack .../03-libtevent0_0.9.37-1_arm64.deb ... Unpacking libtevent0:arm64 (0.9.37-1) ... Selecting previously unselected package libldb1:arm64. Preparing to unpack .../04-libldb1_2%3a1.5.1+really1.4.6-3_arm64.deb ... Unpacking libldb1:arm64 (2:1.5.1+really1.4.6-3) ... Selecting previously unselected package libpython2.7:arm64. Preparing to unpack .../05-libpython2.7_2.7.16-2+deb10u1_arm64.deb ... Unpacking libpython2.7:arm64 (2.7.16-2+deb10u1) ... Selecting previously unselected package python-ldb. Preparing to unpack .../06-python-ldb_2%3a1.5.1+really1.4.6-3_arm64.deb ... Unpacking python-ldb (2:1.5.1+really1.4.6-3) ... Selecting previously unselected package python-tdb. Preparing to unpack .../07-python-tdb_1.3.16-2+b1_arm64.deb ... Unpacking python-tdb (1.3.16-2+b1) ... Selecting previously unselected package libavahi-client3:arm64. Preparing to unpack .../08-libavahi-client3_0.7-4+b1_arm64.deb ... Unpacking libavahi-client3:arm64 (0.7-4+b1) ... Selecting previously unselected package libcups2:arm64. Preparing to unpack .../09-libcups2_2.2.10-6+deb10u4_arm64.deb ... Unpacking libcups2:arm64 (2.2.10-6+deb10u4) ... Selecting previously unselected package python-talloc:arm64. Preparing to unpack .../10-python-talloc_2.1.14-2_arm64.deb ... Unpacking python-talloc:arm64 (2.1.14-2) ... Selecting previously unselected package samba-libs:arm64. Preparing to unpack .../11-samba-libs_2%3a4.9.5+dfsg-5+deb10u1_arm64.deb ... Unpacking samba-libs:arm64 (2:4.9.5+dfsg-5+deb10u1) ... Selecting previously unselected package python-samba. Preparing to unpack .../12-python-samba_2%3a4.9.5+dfsg-5+deb10u1_arm64.deb ... Unpacking python-samba (2:4.9.5+dfsg-5+deb10u1) ... Selecting previously unselected package samba-common. Preparing to unpack .../13-samba-common_2%3a4.9.5+dfsg-5+deb10u1_all.deb ... Unpacking samba-common (2:4.9.5+dfsg-5+deb10u1) ... Selecting previously unselected package samba-common-bin. Preparing to unpack .../14-samba-common-bin_2%3a4.9.5+dfsg-5+deb10u1_arm64.deb ... Unpacking samba-common-bin (2:4.9.5+dfsg-5+deb10u1) ... Selecting previously unselected package tdb-tools. Preparing to unpack .../15-tdb-tools_1.3.16-2+b1_arm64.deb ... Unpacking tdb-tools (1.3.16-2+b1) ... Selecting previously unselected package samba. Preparing to unpack .../16-samba_2%3a4.9.5+dfsg-5+deb10u1_arm64.deb ... Unpacking samba (2:4.9.5+dfsg-5+deb10u1) ... Selecting previously unselected package attr. Preparing to unpack .../17-attr_1%3a2.4.48-4_arm64.deb ... Unpacking attr (1:2.4.48-4) ... Selecting previously unselected package libibverbs1:arm64. Preparing to unpack .../18-libibverbs1_22.1-1_arm64.deb ... Unpacking libibverbs1:arm64 (22.1-1) ... Selecting previously unselected package ibverbs-providers:arm64. Preparing to unpack .../19-ibverbs-providers_22.1-1_arm64.deb ... Unpacking ibverbs-providers:arm64 (22.1-1) ... Selecting previously unselected package libboost-atomic1.67.0:arm64. Preparing to unpack .../20-libboost-atomic1.67.0_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-atomic1.67.0:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-iostreams1.67.0:arm64. Preparing to unpack .../21-libboost-iostreams1.67.0_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-iostreams1.67.0:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-regex1.67.0:arm64. Preparing to unpack .../22-libboost-regex1.67.0_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-regex1.67.0:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-system1.67.0:arm64. Preparing to unpack .../23-libboost-system1.67.0_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-system1.67.0:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-thread1.67.0:arm64. Preparing to unpack .../24-libboost-thread1.67.0_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-thread1.67.0:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libnspr4:arm64. Preparing to unpack .../25-libnspr4_2%3a4.20-1_arm64.deb ... Unpacking libnspr4:arm64 (2:4.20-1) ... Selecting previously unselected package libnss3:arm64. Preparing to unpack .../26-libnss3_2%3a3.42.1-1+deb10u3_arm64.deb ... Unpacking libnss3:arm64 (2:3.42.1-1+deb10u3) ... Selecting previously unselected package librados2:arm64. Preparing to unpack .../27-librados2_12.2.11+dfsg1-2.1+b1_arm64.deb ... Unpacking librados2:arm64 (12.2.11+dfsg1-2.1+b1) ... Selecting previously unselected package libcephfs2:arm64. Preparing to unpack .../28-libcephfs2_12.2.11+dfsg1-2.1+b1_arm64.deb ... Unpacking libcephfs2:arm64 (12.2.11+dfsg1-2.1+b1) ... Selecting previously unselected package libglusterfs0:arm64. Preparing to unpack .../29-libglusterfs0_5.5-3_arm64.deb ... Unpacking libglusterfs0:arm64 (5.5-3) ... Selecting previously unselected package libgfxdr0:arm64. Preparing to unpack .../30-libgfxdr0_5.5-3_arm64.deb ... Unpacking libgfxdr0:arm64 (5.5-3) ... Selecting previously unselected package libgfrpc0:arm64. Preparing to unpack .../31-libgfrpc0_5.5-3_arm64.deb ... Unpacking libgfrpc0:arm64 (5.5-3) ... Selecting previously unselected package libgfapi0:arm64. Preparing to unpack .../32-libgfapi0_5.5-3_arm64.deb ... Unpacking libgfapi0:arm64 (5.5-3) ... Selecting previously unselected package libgpgme11:arm64. Preparing to unpack .../33-libgpgme11_1.12.0-6_arm64.deb ... Unpacking libgpgme11:arm64 (1.12.0-6) ... Selecting previously unselected package python-gpg. Preparing to unpack .../34-python-gpg_1.12.0-6_arm64.deb ... Unpacking python-gpg (1.12.0-6) ... Selecting previously unselected package samba-dsdb-modules:arm64. Preparing to unpack .../35-samba-dsdb-modules_2%3a4.9.5+dfsg-5+deb10u1_arm64.deb ... Unpacking samba-dsdb-modules:arm64 (2:4.9.5+dfsg-5+deb10u1) ... Selecting previously unselected package samba-vfs-modules:arm64. Preparing to unpack .../36-samba-vfs-modules_2%3a4.9.5+dfsg-5+deb10u1_arm64.deb ... Unpacking samba-vfs-modules:arm64 (2:4.9.5+dfsg-5+deb10u1) ... Setting up python-crypto (2.6.1-9+b1) ... Setting up libibverbs1:arm64 (22.1-1) ... Setting up libpython2.7:arm64 (2.7.16-2+deb10u1) ... Setting up libboost-regex1.67.0:arm64 (1.67.0-13+deb10u1) ... Setting up ibverbs-providers:arm64 (22.1-1) ... Setting up attr (1:2.4.48-4) ... Setting up libtdb1:arm64 (1.3.16-2+b1) ... Setting up samba-common (2:4.9.5+dfsg-5+deb10u1) ... Creating config file /etc/samba/smb.conf with new version Setting up libgpgme11:arm64 (1.12.0-6) ... Setting up libglusterfs0:arm64 (5.5-3) ... Setting up libtevent0:arm64 (0.9.37-1) ... Setting up libnspr4:arm64 (2:4.20-1) ... Setting up tdb-tools (1.3.16-2+b1) ... update-alternatives: using /usr/bin/tdbbackup.tdbtools to provide /usr/bin/tdbbackup (tdbbackup) in auto mode Setting up libboost-iostreams1.67.0:arm64 (1.67.0-13+deb10u1) ... Setting up python-tdb (1.3.16-2+b1) ... Setting up libboost-atomic1.67.0:arm64 (1.67.0-13+deb10u1) ... Setting up python-dnspython (1.16.0-1) ... Setting up libboost-system1.67.0:arm64 (1.67.0-13+deb10u1) ... Setting up python-gpg (1.12.0-6) ... Setting up python-talloc:arm64 (2.1.14-2) ... Setting up libavahi-client3:arm64 (0.7-4+b1) ... Setting up libgfxdr0:arm64 (5.5-3) ... Setting up libldb1:arm64 (2:1.5.1+really1.4.6-3) ... Setting up libboost-thread1.67.0:arm64 (1.67.0-13+deb10u1) ... Setting up libnss3:arm64 (2:3.42.1-1+deb10u3) ... Setting up python-ldb (2:1.5.1+really1.4.6-3) ... Setting up libcups2:arm64 (2.2.10-6+deb10u4) ... Setting up libgfrpc0:arm64 (5.5-3) ... Setting up librados2:arm64 (12.2.11+dfsg1-2.1+b1) ... Setting up samba-libs:arm64 (2:4.9.5+dfsg-5+deb10u1) ... Setting up libcephfs2:arm64 (12.2.11+dfsg1-2.1+b1) ... Setting up libgfapi0:arm64 (5.5-3) ... Setting up samba-dsdb-modules:arm64 (2:4.9.5+dfsg-5+deb10u1) ... Setting up python-samba (2:4.9.5+dfsg-5+deb10u1) ... Setting up samba-vfs-modules:arm64 (2:4.9.5+dfsg-5+deb10u1) ... Setting up samba-common-bin (2:4.9.5+dfsg-5+deb10u1) ... Checking smb.conf with testparm Load smb config files from /etc/samba/smb.conf Loaded services file OK. WARNING: The 'netbios name' is too long (max. 15 chars). Server role: ROLE_STANDALONE Done Setting up samba (2:4.9.5+dfsg-5+deb10u1) ... Adding group `sambashare' (GID 117) ... Done. Samba is not being run as an AD Domain Controller: Masking samba-ad-dc.service Please ignore the following error about deb-systemd-helper not finding those services. (samba-ad-dc.service masked) Created symlink /etc/systemd/system/multi-user.target.wants/nmbd.service → /lib/systemd/system/nmbd.service. Failed to preset unit: Unit file /etc/systemd/system/samba-ad-dc.service is masked. /usr/bin/deb-systemd-helper: error: systemctl preset failed on samba-ad-dc.service: No such file or directory Created symlink /etc/systemd/system/multi-user.target.wants/smbd.service → /lib/systemd/system/smbd.service. Processing triggers for systemd (241-7~deb10u5) ... Processing triggers for man-db (2.8.5-2) ... Processing triggers for libc-bin (2.28-10) ... Updating FireMotD available updates count ... + return 0 + echo OK OK ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:09:39_AEST [openHABian] Setting up Samba network shares... ' 2020-12-28_09:09:39_AEST [openHABian] Setting up Samba network shares... + cond_echo '\nCopying over custom '\''smb.conf'\''... ' + [[ -z '' ]] + echo -e '\033[33;01m\nCopying over custom '\''smb.conf'\''... \033[39;49;00m' Copying over custom 'smb.conf'... + cond_redirect cp /opt/openhabian/includes/smb.conf /etc/samba/smb.conf + [[ -n '' ]] + echo -e '\n\033[90;01m$ cp /opt/openhabian/includes/smb.conf /etc/samba/smb.conf \033[39;49;00m' $ cp /opt/openhabian/includes/smb.conf /etc/samba/smb.conf + cp /opt/openhabian/includes/smb.conf /etc/samba/smb.conf + return 0 + cond_echo '\nWriting authentication data to openHABian default... ' + [[ -z '' ]] + echo -e '\033[33;01m\nWriting authentication data to openHABian default... \033[39;49;00m' Writing authentication data to openHABian default... + smbpasswd -e openhabian + echo openhabian + echo openhabian + smbpasswd -s -a openhabian + echo OK OK ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:09:41_AEST [openHABian] Setting up Samba service... ' 2020-12-28_09:09:41_AEST [openHABian] Setting up Samba service... + cond_redirect mkdir -p /var/log/samba /var/run/samba + [[ -n '' ]] + echo -e '\n\033[90;01m$ mkdir -p /var/log/samba /var/run/samba \033[39;49;00m' $ mkdir -p /var/log/samba /var/run/samba + mkdir -p /var/log/samba /var/run/samba + return 0 + cond_redirect sed -i -E -e '/PIDFile/d; /NotifyAccess/ a PIDFile=smbd.pid\nRuntimeDirectory=samba' /lib/systemd/system/smbd.service + [[ -n '' ]] + echo -e '\n\033[90;01m$ sed -i -E -e /PIDFile/d; /NotifyAccess/ a PIDFile=smbd.pid\nRuntimeDirectory=samba /lib/systemd/system/smbd.service \033[39;49;00m' $ sed -i -E -e /PIDFile/d; /NotifyAccess/ a PIDFile=smbd.pid RuntimeDirectory=samba /lib/systemd/system/smbd.service + sed -i -E -e '/PIDFile/d; /NotifyAccess/ a PIDFile=smbd.pid\nRuntimeDirectory=samba' /lib/systemd/system/smbd.service + return 0 + cond_redirect systemctl -q daemon-reload + cond_redirect systemctl enable --now smbd.service + echo OK OK + permissions_corrections + local gpioDir=/sys/devices/platform/soc + groups=("audio" "bluetooth" "dialout" "gpio" "tty") + local groups + openhabFolders=("/etc/openhab" "/var/lib/openhab" "/var/log/openhab" "/usr/share/openhab") + local openhabFolders + local openhabHome=/var/lib/openhab ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:09:44_AEST [openHABian] Applying file permissions recommendations... ' 2020-12-28_09:09:44_AEST [openHABian] Applying file permissions recommendations... + openhab_is_installed + openhab2_is_installed ++ dpkg -s openhab2 ++ grep Status ++ cut '-d ' -f2 + [[ '' == \i\n\s\t\a\l\l ]] + return 1 + openhab3_is_installed ++ dpkg -s openhab ++ grep Status ++ cut '-d ' -f2 + [[ install == \i\n\s\t\a\l\l ]] + return 0 + return 0 + for pGroup in "${groups[@]}" + grep -qs '^[[:space:]]*audio:' /etc/group + cond_redirect usermod --append --groups audio openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ usermod --append --groups audio openhab \033[39;49;00m' $ usermod --append --groups audio openhab + usermod --append --groups audio openhab + return 0 + cond_redirect usermod --append --groups audio openhabian + [[ -n '' ]] + echo -e '\n\033[90;01m$ usermod --append --groups audio openhabian \033[39;49;00m' $ usermod --append --groups audio openhabian + usermod --append --groups audio openhabian + return 0 + for pGroup in "${groups[@]}" + grep -qs '^[[:space:]]*bluetooth:' /etc/group + cond_redirect usermod --append --groups bluetooth openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ usermod --append --groups bluetooth openhab \033[39;49;00m' $ usermod --append --groups bluetooth openhab + usermod --append --groups bluetooth openhab + return 0 + cond_redirect usermod --append --groups bluetooth openhabian + [[ -n '' ]] + echo -e '\n\033[90;01m$ usermod --append --groups bluetooth openhabian \033[39;49;00m' $ usermod --append --groups bluetooth openhabian + usermod --append --groups bluetooth openhabian + return 0 + for pGroup in "${groups[@]}" + grep -qs '^[[:space:]]*dialout:' /etc/group + cond_redirect usermod --append --groups dialout openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ usermod --append --groups dialout openhab \033[39;49;00m' $ usermod --append --groups dialout openhab + usermod --append --groups dialout openhab + return 0 + cond_redirect usermod --append --groups dialout openhabian + [[ -n '' ]] + echo -e '\n\033[90;01m$ usermod --append --groups dialout openhabian \033[39;49;00m' $ usermod --append --groups dialout openhabian + usermod --append --groups dialout openhabian + return 0 + for pGroup in "${groups[@]}" + grep -qs '^[[:space:]]*gpio:' /etc/group + cond_redirect usermod --append --groups gpio openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ usermod --append --groups gpio openhab \033[39;49;00m' $ usermod --append --groups gpio openhab + usermod --append --groups gpio openhab + return 0 + cond_redirect usermod --append --groups gpio openhabian + [[ -n '' ]] + echo -e '\n\033[90;01m$ usermod --append --groups gpio openhabian \033[39;49;00m' $ usermod --append --groups gpio openhabian + usermod --append --groups gpio openhabian + return 0 + for pGroup in "${groups[@]}" + grep -qs '^[[:space:]]*tty:' /etc/group + cond_redirect usermod --append --groups tty openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ usermod --append --groups tty openhab \033[39;49;00m' $ usermod --append --groups tty openhab + usermod --append --groups tty openhab + return 0 + cond_redirect usermod --append --groups tty openhabian + [[ -n '' ]] + echo -e '\n\033[90;01m$ usermod --append --groups tty openhabian \033[39;49;00m' $ usermod --append --groups tty openhabian + usermod --append --groups tty openhabian + return 0 + cond_redirect usermod --append --groups openhab openhabian + [[ -n '' ]] + echo -e '\n\033[90;01m$ usermod --append --groups openhab openhabian \033[39;49;00m' $ usermod --append --groups openhab openhabian + usermod --append --groups openhab openhabian + return 0 + cond_redirect chown openhab:openhab /srv /srv/README.txt /opt + [[ -n '' ]] + echo -e '\n\033[90;01m$ chown openhab:openhab /srv /srv/README.txt /opt \033[39;49;00m' $ chown openhab:openhab /srv /srv/README.txt /opt + chown openhab:openhab /srv /srv/README.txt /opt + return 0 + cond_redirect chmod ugo+w /srv /srv/README.txt + [[ -n '' ]] + echo -e '\n\033[90;01m$ chmod ugo+w /srv /srv/README.txt \033[39;49;00m' $ chmod ugo+w /srv /srv/README.txt + chmod ugo+w /srv /srv/README.txt + return 0 + cond_redirect chown --recursive openhab:openhab /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ chown --recursive openhab:openhab /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab \033[39;49;00m' $ chown --recursive openhab:openhab /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + chown --recursive openhab:openhab /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + return 0 + cond_redirect chmod --recursive ug+wX /opt /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ chmod --recursive ug+wX /opt /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab \033[39;49;00m' $ chmod --recursive ug+wX /opt /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + chmod --recursive ug+wX /opt /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + return 0 + [[ -d /var/lib/openhab/.ssh ]] + cond_redirect chown --recursive openhabian:openhabian /home/openhabian + [[ -n '' ]] + echo -e '\n\033[90;01m$ chown --recursive openhabian:openhabian /home/openhabian \033[39;49;00m' $ chown --recursive openhabian:openhabian /home/openhabian + chown --recursive openhabian:openhabian /home/openhabian + return 0 + '[' -f /etc/mosquitto/passwd ']' + cond_redirect setfacl -R --remove-all /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ setfacl -R --remove-all /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab \033[39;49;00m' $ setfacl -R --remove-all /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + setfacl -R --remove-all /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + return 0 + cond_redirect setfacl -R -m g::rwX /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ setfacl -R -m g::rwX /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab \033[39;49;00m' $ setfacl -R -m g::rwX /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + setfacl -R -m g::rwX /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + return 0 + cond_redirect setfacl -R -m d:g::rwX /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ setfacl -R -m d:g::rwX /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab \033[39;49;00m' $ setfacl -R -m d:g::rwX /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + setfacl -R -m d:g::rwX /etc/openhab /var/lib/openhab /var/log/openhab /usr/share/openhab + return 0 + cond_redirect chgrp --silent root /var/log/samba /var/log/unattended-upgrades + [[ -n '' ]] + echo -e '\n\033[90;01m$ chgrp --silent root /var/log/samba /var/log/unattended-upgrades \033[39;49;00m' $ chgrp --silent root /var/log/samba /var/log/unattended-upgrades + chgrp --silent root /var/log/samba /var/log/unattended-upgrades + return 0 + echo OK OK + [[ -d /etc/homegear ]] + add_admin_ssh_key + local karafKeys=/var/lib/openhab/etc/keys.properties + local userName=openhabian + local sshDir + local keyFile ++ cut -d: -f6 ++ getent passwd openhabian + sshDir=/home/openhabian/.ssh + keyFile=/home/openhabian/.ssh/authorized_keys + [[ -z '' ]] + return 0 + clean_config_userpw + cond_redirect sed -i -e 's|^userpw=.*$|\#userpw=xxxxxx|g' /etc/openhabian.conf + [[ -n '' ]] + echo -e '\n\033[90;01m$ sed -i -e s|^userpw=.*$|\#userpw=xxxxxx|g /etc/openhabian.conf \033[39;49;00m' $ sed -i -e s|^userpw=.*$|\#userpw=xxxxxx|g /etc/openhabian.conf + sed -i -e 's|^userpw=.*$|\#userpw=xxxxxx|g' /etc/openhabian.conf + return 0 + frontail_setup + local frontailBase + local frontailUser=frontail ++ command -v npm + [[ -x /usr/bin/npm ]] ++ node --version + [[ v10.21.0 != \v\1\2* ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:09:46_AEST [openHABian] Installing Frontail prerequsites (NodeJS)... ' 2020-12-28_09:09:46_AEST [openHABian] Installing Frontail prerequsites (NodeJS)... + cond_redirect nodejs_setup + [[ -n '' ]] + echo -e '\n\033[90;01m$ nodejs_setup \033[39;49;00m' $ nodejs_setup + nodejs_setup ++ command -v npm + [[ -x /usr/bin/npm ]] ++ node --version + [[ v10.21.0 == \v\1\2* ]] + local link=https://unofficial-builds.nodejs.org/download/release/v12.19.0/node-v12.19.0-linux-armv6l.tar.xz + local myDistro + local temp ++ command -v lsb_release + [[ -x /usr/bin/lsb_release ]] ++ lsb_release -sc + myDistro=buster ++ mktemp /tmp/openhabian.XXXXX + temp=/tmp/openhabian.ugEG1 + [[ -z '' ]] + is_armv6l + [[ '' == \a\r\m\v\6\l ]] + case "$(uname -m)" in ++ uname -m + return 1 + [[ -z '' ]] + add_keys https://deb.nodesource.com/gpgkey/nodesource.gpg.key + local repoKey ++ mktemp /tmp/openhabian.XXXXX + repoKey=/tmp/openhabian.fvuVE ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:09:47_AEST [openHABian] Adding required keys to apt... ' 2020-12-28_09:09:47_AEST [openHABian] Adding required keys to apt... + cond_redirect wget -qO /tmp/openhabian.fvuVE https://deb.nodesource.com/gpgkey/nodesource.gpg.key + [[ -n '' ]] + echo -e '\n\033[90;01m$ wget -qO /tmp/openhabian.fvuVE https://deb.nodesource.com/gpgkey/nodesource.gpg.key \033[39;49;00m' $ wget -qO /tmp/openhabian.fvuVE https://deb.nodesource.com/gpgkey/nodesource.gpg.key + wget -qO /tmp/openhabian.fvuVE https://deb.nodesource.com/gpgkey/nodesource.gpg.key + return 0 + cond_redirect apt-key add /tmp/openhabian.fvuVE + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-key add /tmp/openhabian.fvuVE \033[39;49;00m' $ apt-key add /tmp/openhabian.fvuVE + apt-key add /tmp/openhabian.fvuVE Warning: apt-key output should not be parsed (stdout is not a terminal) OK + return 0 + echo OK OK + rm -f /tmp/openhabian.fvuVE ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:09:49_AEST [openHABian] Adding NodeSource repository to apt... ' 2020-12-28_09:09:49_AEST [openHABian] Adding NodeSource repository to apt... + echo 'deb https://deb.nodesource.com/node_12.x buster main' + echo 'deb-src https://deb.nodesource.com/node_12.x buster main' + [[ -n '' ]] + cond_redirect apt-get update + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get update \033[39;49;00m' $ apt-get update + apt-get update Hit:1 http://deb.debian.org/debian buster InRelease Hit:2 https://deb.nodesource.com/node_12.x buster InRelease Hit:3 http://davesteele.github.io/comitup/repo comitup InRelease Hit:4 http://deb.debian.org/debian-security buster/updates InRelease Hit:5 http://deb.debian.org/debian buster-updates InRelease Hit:6 http://archive.raspberrypi.org/debian buster InRelease Ign:7 https://dl.bintray.com/openhab/apt-repo2 stable InRelease Get:8 https://dl.bintray.com/openhab/apt-repo2 stable Release [6,051 B] Fetched 6,051 B in 5s (1,211 B/s) Reading package lists... + return 0 + echo OK OK ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:09:58_AEST [openHABian] Installing NodeJS... ' 2020-12-28_09:09:58_AEST [openHABian] Installing NodeJS... + [[ -n '' ]] + cond_redirect apt-get install --yes nodejs + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get install --yes nodejs \033[39;49;00m' $ apt-get install --yes nodejs + apt-get install --yes nodejs Reading package lists... Building dependency tree... Reading state information... The following packages were automatically installed and are no longer required: gyp javascript-common libbrotli1 libc-ares2 libjs-inherits libjs-is-typedarray libssl-dev libuv1 libuv1-dev node-abbrev node-ajv node-ansi node-ansi-align node-ansi-regex node-ansi-styles node-ansistyles node-aproba node-archy node-are-we-there-yet node-asn1 node-assert-plus node-asynckit node-aws-sign2 node-aws4 node-balanced-match node-bcrypt-pbkdf node-bluebird node-boxen node-brace-expansion node-builtin-modules node-builtins node-cacache node-call-limit node-camelcase node-caseless node-chalk node-chownr node-cli-boxes node-cliui node-clone node-co node-color-convert node-color-name node-combined-stream node-concat-map node-concat-stream node-config-chain node-console-control-strings node-copy-concurrently node-core-util-is node-cross-spawn node-cyclist node-dashdash node-decamelize node-decompress-response node-deep-extend node-defaults node-delayed-stream node-delegates node-detect-indent node-detect-newline node-duplexer3 node-duplexify node-ecc-jsbn node-editor node-encoding node-end-of-stream node-errno node-escape-string-regexp node-execa node-extend node-extsprintf node-find-up node-flush-write-stream node-forever-agent node-form-data node-from2 node-fs-vacuum node-fs-write-stream-atomic node-fs.realpath node-gauge node-get-caller-file node-get-stream node-getpass node-glob node-got node-graceful-fs node-har-schema node-har-validator node-has-flag node-has-symbol-support-x node-has-to-string-tag-x node-has-unicode node-hosted-git-info node-http-signature node-iconv-lite node-iferr node-import-lazy node-imurmurhash node-inflight node-inherits node-ini node-invert-kv node-is-builtin-module node-is-npm node-is-object node-is-plain-obj node-is-retry-allowed node-is-stream node-is-typedarray node-isarray node-isexe node-isstream node-isurl node-jsbn node-json-parse-better-errors node-json-schema node-json-stable-stringify node-json-stringify-safe node-jsonify node-jsonparse node-jsonstream node-jsprim node-latest-version node-lazy-property node-lcid node-libnpx node-locate-path node-lockfile node-lowercase-keys node-lru-cache node-mem node-mime-types node-mimic-fn node-mimic-response node-minimatch node-minimist node-mississippi node-mkdirp node-move-concurrently node-mute-stream node-node-uuid node-nopt node-normalize-package-data node-npm-package-arg node-npm-run-path node-npmlog node-oauth-sign node-object-assign node-once node-opener node-os-locale node-osenv node-p-cancelable node-p-finally node-p-limit node-p-locate node-p-timeout node-package-json node-parallel-transform node-path-exists node-path-is-absolute node-path-is-inside node-performance-now node-prepend-http node-process-nextick-args node-promise-inflight node-promzard node-proto-list node-prr node-pump node-pumpify node-punycode node-qs node-qw node-rc node-read node-read-package-json node-readable-stream node-registry-auth-token node-registry-url node-request node-require-directory node-require-main-filename node-resolve-from node-retry node-rimraf node-run-queue node-safe-buffer node-semver node-semver-diff node-set-blocking node-sha node-shebang-command node-shebang-regex node-signal-exit node-slash node-slide node-sorted-object node-spdx-correct node-spdx-expression-parse node-spdx-license-ids node-sshpk node-ssri node-stream-each node-stream-iterate node-stream-shift node-string-decoder node-string-width node-strip-ansi node-strip-eof node-strip-json-comments node-supports-color node-tar node-term-size node-text-table node-through node-through2 node-timed-out node-tough-cookie node-tunnel-agent node-tweetnacl node-typedarray node-uid-number node-unique-filename node-unpipe node-url-parse-lax node-url-to-options node-util-deprecate node-uuid node-validate-npm-package-license node-validate-npm-package-name node-verror node-wcwidth.js node-which node-which-module node-wide-align node-widest-line node-wrap-ansi node-wrappy node-write-file-atomic node-xdg-basedir node-xtend node-y18n node-yallist node-yargs node-yargs-parser nodejs-doc python-pkg-resources triggerhappy Use 'apt autoremove' to remove them. The following packages will be REMOVED: libnode-dev libnode64 node-gyp npm The following packages will be upgraded: nodejs apt-listchanges: Reading changelogs... 1 upgraded, 0 newly installed, 4 to remove and 0 not upgraded. Need to get 0 B/17.6 MB of archives. After this operation, 60.1 MB of additional disk space will be used. (Reading database ... 53541 files and directories currently installed.) Removing npm (5.8.0+ds6-4+deb10u2) ... Removing node-gyp (3.8.0-6) ... Removing libnode-dev:arm64 (10.21.0~dfsg-1~deb10u1) ... dpkg: libnode64:arm64: dependency problems, but removing anyway as you requested: nodejs depends on libnode64 (= 10.21.0~dfsg-1~deb10u1). Removing libnode64:arm64 (10.21.0~dfsg-1~deb10u1) ... (Reading database ... 51062 files and directories currently installed.) Preparing to unpack .../nodejs_12.20.0-1nodesource1_arm64.deb ... Unpacking nodejs (12.20.0-1nodesource1) over (10.21.0~dfsg-1~deb10u1) ... Setting up nodejs (12.20.0-1nodesource1) ... Processing triggers for libc-bin (2.28-10) ... Processing triggers for man-db (2.8.5-2) ... Updating FireMotD available updates count ... + return 0 + echo OK OK + return 0 + echo OK OK ++ npm list -g ++ head -n 1 + frontailBase=/usr/lib/node_modules/frontail + id -u frontail + cond_redirect useradd --groups openhabian,openhab -s /bin/bash -d /var/tmp frontail + [[ -n '' ]] + echo -e '\n\033[90;01m$ useradd --groups openhabian,openhab -s /bin/bash -d /var/tmp frontail \033[39;49;00m' $ useradd --groups openhabian,openhab -s /bin/bash -d /var/tmp frontail + useradd --groups openhabian,openhab -s /bin/bash -d /var/tmp frontail + return 0 ++ command -v frontail + [[ -x '' ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:11:01_AEST [openHABian] Installing openHAB Log Viewer (frontail)... ' 2020-12-28_09:11:01_AEST [openHABian] Installing openHAB Log Viewer (frontail)... + [[ -d /usr/lib/node_modules/frontail ]] + cond_redirect npm install --force -g frontail + [[ -n '' ]] + echo -e '\n\033[90;01m$ npm install --force -g frontail \033[39;49;00m' $ npm install --force -g frontail + npm install --force -g frontail npm WARN using --force I sure hope you know what you are doing. npm WARN deprecated debug@4.1.1: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated har-validator@5.1.5: this library is no longer supported /usr/bin/frontail -> /usr/lib/node_modules/frontail/bin/frontail + frontail@4.9.1 added 160 packages from 120 contributors in 12.734s + return 0 + cond_redirect npm update --force -g frontail + [[ -n '' ]] + echo -e '\n\033[90;01m$ npm update --force -g frontail \033[39;49;00m' $ npm update --force -g frontail + npm update --force -g frontail npm WARN using --force I sure hope you know what you are doing. + return 0 + echo OK OK ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:11:38_AEST [openHABian] Configuring openHAB Log Viewer (frontail)... ' 2020-12-28_09:11:38_AEST [openHABian] Configuring openHAB Log Viewer (frontail)... + cond_redirect mkdir -p /usr/lib/node_modules/frontail/preset /usr/lib/node_modules/frontail/web/assets/styles + [[ -n '' ]] + echo -e '\n\033[90;01m$ mkdir -p /usr/lib/node_modules/frontail/preset /usr/lib/node_modules/frontail/web/assets/styles \033[39;49;00m' $ mkdir -p /usr/lib/node_modules/frontail/preset /usr/lib/node_modules/frontail/web/assets/styles + mkdir -p /usr/lib/node_modules/frontail/preset /usr/lib/node_modules/frontail/web/assets/styles + return 0 + cond_redirect rm -rf /usr/lib/node_modules/frontail/preset/default.json /usr/lib/node_modules/frontail/preset/npmlog.json /usr/lib/node_modules/frontail/preset/python.json /usr/lib/node_modules/frontail/web/assets/styles/bootstrap.min.css /usr/lib/node_modules/frontail/web/assets/styles/dark.css /usr/lib/node_modules/frontail/web/assets/styles/default.css + [[ -n '' ]] + echo -e '\n\033[90;01m$ rm -rf /usr/lib/node_modules/frontail/preset/default.json /usr/lib/node_modules/frontail/preset/npmlog.json /usr/lib/node_modules/frontail/preset/python.json /usr/lib/node_modules/frontail/web/assets/styles/bootstrap.min.css /usr/lib/node_modules/frontail/web/assets/styles/dark.css /usr/lib/node_modules/frontail/web/assets/styles/default.css \033[39;49;00m' $ rm -rf /usr/lib/node_modules/frontail/preset/default.json /usr/lib/node_modules/frontail/preset/npmlog.json /usr/lib/node_modules/frontail/preset/python.json /usr/lib/node_modules/frontail/web/assets/styles/bootstrap.min.css /usr/lib/node_modules/frontail/web/assets/styles/dark.css /usr/lib/node_modules/frontail/web/assets/styles/default.css + rm -rf /usr/lib/node_modules/frontail/preset/default.json /usr/lib/node_modules/frontail/preset/npmlog.json /usr/lib/node_modules/frontail/preset/python.json /usr/lib/node_modules/frontail/web/assets/styles/bootstrap.min.css /usr/lib/node_modules/frontail/web/assets/styles/dark.css /usr/lib/node_modules/frontail/web/assets/styles/default.css + return 0 + cond_redirect cp /opt/openhabian/includes/frontail-preset.json /usr/lib/node_modules/frontail/preset/openhab.json + [[ -n '' ]] + echo -e '\n\033[90;01m$ cp /opt/openhabian/includes/frontail-preset.json /usr/lib/node_modules/frontail/preset/openhab.json \033[39;49;00m' $ cp /opt/openhabian/includes/frontail-preset.json /usr/lib/node_modules/frontail/preset/openhab.json + cp /opt/openhabian/includes/frontail-preset.json /usr/lib/node_modules/frontail/preset/openhab.json + return 0 + cond_redirect cp /opt/openhabian/includes/frontail-theme.css /usr/lib/node_modules/frontail/web/assets/styles/openhab.css + [[ -n '' ]] + echo -e '\n\033[90;01m$ cp /opt/openhabian/includes/frontail-theme.css /usr/lib/node_modules/frontail/web/assets/styles/openhab.css \033[39;49;00m' $ cp /opt/openhabian/includes/frontail-theme.css /usr/lib/node_modules/frontail/web/assets/styles/openhab.css + cp /opt/openhabian/includes/frontail-theme.css /usr/lib/node_modules/frontail/web/assets/styles/openhab.css + return 0 + echo OK OK ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:11:38_AEST [openHABian] Setting up openHAB Log Viewer (frontail) service... ' 2020-12-28_09:11:38_AEST [openHABian] Setting up openHAB Log Viewer (frontail) service... + sed -e 's|%FRONTAILBASE|/usr/lib/node_modules/frontail|g' /opt/openhabian/includes/frontail.service + cond_redirect chmod 644 /etc/systemd/system/frontail.service + [[ -n '' ]] + echo -e '\n\033[90;01m$ chmod 644 /etc/systemd/system/frontail.service \033[39;49;00m' $ chmod 644 /etc/systemd/system/frontail.service + chmod 644 /etc/systemd/system/frontail.service + return 0 + cond_redirect systemctl -q daemon-reload + cond_redirect systemctl enable --now frontail.service + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl enable --now frontail.service \033[39;49;00m' $ systemctl enable --now frontail.service + systemctl enable --now frontail.service Created symlink /etc/systemd/system/multi-user.target.wants/frontail.service → /etc/systemd/system/frontail.service. + return 0 + echo OK OK + openhab_is_installed + openhab2_is_installed ++ dpkg -s openhab2 ++ grep Status ++ cut '-d ' -f2 + [[ '' == \i\n\s\t\a\l\l ]] + return 1 + openhab3_is_installed ++ dpkg -s openhab ++ grep Status ++ cut '-d ' -f2 + [[ install == \i\n\s\t\a\l\l ]] + return 0 + return 0 + dashboard_add_tile frontail + local application + local dashboardConfig + local openhabConfig + local tileDesc + local tileImg + local tileURL + application=frontail + openhabConfig=/etc/openhab + dashboardConfig=/etc/openhab/services/dashboard.cfg ++ grep '^[[:space:]]*tile_desc_frontail' /opt/openhabian/includes/dashboard-imagedata ++ sed 's|tile_desc_frontail=||g; s|"||g' + tileDesc='openHAB Log Viewer' ++ grep '^[[:space:]]*tile_imagedata_frontail' /opt/openhabian/includes/dashboard-imagedata ++ sed 's|tile_imagedata_frontail=||g; s|"||g' + tileImg='data:image/png;base64,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' ++ grep '^[[:space:]]*tile_url_frontail' /opt/openhabian/includes/dashboard-imagedata ++ sed 's|tile_url_frontail=||g; s|"||g' + tileURL='http://{HOSTNAME}:9001' ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:11:39_AEST [openHABian] Adding an openHAB dashboard tile for '\''frontail'\''... ' 2020-12-28_09:11:39_AEST [openHABian] Adding an openHAB dashboard tile for 'frontail'... + case $application in + true + openhab_is_installed + openhab2_is_installed ++ dpkg -s openhab2 ++ cut '-d ' -f2 ++ grep Status + [[ '' == \i\n\s\t\a\l\l ]] + return 1 + openhab3_is_installed ++ dpkg -s openhab ++ cut '-d ' -f2 ++ grep Status + [[ install == \i\n\s\t\a\l\l ]] + return 0 + return 0 + [[ -d /etc/openhab/services ]] + touch /etc/openhab/services/dashboard.cfg + grep -qs frontail.link /etc/openhab/services/dashboard.cfg + [[ -z openHAB Log Viewer ]] + [[ -z http://{HOSTNAME}:9001 ]] + [[ -z data:image/png;base64,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 ]] + echo -e '\nfrontail.link-name=openHAB Log Viewer\nfrontail.link-url=http://{HOSTNAME}:9001\nfrontail.link-imageurl=data:image/png;base64,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' + echo OK OK + zram_setup + is_pifour_8GB + [[ '' == \p\i\4\_\8\g\b ]] ++ awk '/MemTotal/ {print $2}' /proc/meminfo + totalMemory=8003320 + is_pifour + [[ '' == \p\i\4 ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]11[0-9a-fA-F]$' /proc/cpuinfo + return 0 + [[ 8003320 -gt 5000000 ]] + return 0 + is_aarch64 + [[ '' == \a\a\r\c\h\6\4 ]] + [[ '' == \a\r\m\6\4 ]] + case "$(uname -m)" in ++ uname -m + return 0 + [[ -n 1 ]] + [[ enable == \d\i\s\a\b\l\e ]] + is_arm + is_armv6l + [[ '' == \a\r\m\v\6\l ]] + case "$(uname -m)" in ++ uname -m + return 1 + is_armv7l + [[ '' == \a\r\m\v\7\l ]] + case "$(uname -m)" in ++ uname -m + return 1 + is_aarch64 + [[ '' == \a\a\r\c\h\6\4 ]] + [[ '' == \a\r\m\6\4 ]] + case "$(uname -m)" in ++ uname -m + return 0 + return 0 + has_lowmem + local totalMemory ++ awk '/MemTotal/ {print $2}' /proc/meminfo + totalMemory=8003320 + [[ -z 8003320 ]] + [[ 8003320 -lt 900000 ]] + return 1 + is_pione + [[ '' == \p\i\1 ]] + grep -q '^Revision\s*:\s*00[0-9a-fA-F][0-9a-fA-F]$' /proc/cpuinfo + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]0[0-36][0-9a-fA-F]$' /proc/cpuinfo + return 1 + is_cmone + [[ '' == \c\m\1 ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]06[0-9a-fA-F]$' /proc/cpuinfo + return 1 + is_pizero + [[ '' == \p\i\0 ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]09[0-9a-fA-F]$' /proc/cpuinfo + return 1 + is_pizerow + [[ '' == \p\i\0\w ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]0[cC][0-9a-fA-F]$' /proc/cpuinfo + return 1 ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:11:39_AEST [openHABian] Installing ZRAM... ' 2020-12-28_09:11:39_AEST [openHABian] Installing ZRAM... + cond_redirect init_zram_mounts install + [[ -n '' ]] + echo -e '\n\033[90;01m$ init_zram_mounts install \033[39;49;00m' $ init_zram_mounts install + init_zram_mounts install + is_arm + is_armv6l + [[ '' == \a\r\m\v\6\l ]] + case "$(uname -m)" in ++ uname -m + return 1 + is_armv7l + [[ '' == \a\r\m\v\7\l ]] + case "$(uname -m)" in ++ uname -m + return 1 + is_aarch64 + [[ '' == \a\a\r\c\h\6\4 ]] + [[ '' == \a\r\m\6\4 ]] + case "$(uname -m)" in ++ uname -m + return 0 + return 0 + local disklistFileAWS=/etc/amanda/openhab-aws/disklist + local disklistFileDir=/etc/amanda/openhab-dir/disklist + local 'introText=You are about to activate the ZRAM feature.\nBe aware you do this at your own risk of data loss.\nPlease check out the "ZRAM status" thread at https://community.openhab.org/t/zram-status/80996 before proceeding.' + local 'lowMemText=Your system has less than 1 GB of RAM. It is definitely NOT recommended to run ZRAM (AND openHAB) on your box. If you proceed now you will do so at your own risk!' + local zramInstallLocation=/opt/zram + [[ install == \i\n\s\t\a\l\l ]] + [[ -f /etc/ztab ]] + [[ -n '' ]] + dpkg -s make libattr1-dev ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:11:39_AEST [openHABian] Installing ZRAM required packages (make, libattr1-dev)... ' 2020-12-28_09:11:39_AEST [openHABian] Installing ZRAM required packages (make, libattr1-dev)... + cond_redirect apt-get install --yes make libattr1-dev + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get install --yes make libattr1-dev \033[39;49;00m' $ apt-get install --yes make libattr1-dev + apt-get install --yes make libattr1-dev Reading package lists... Building dependency tree... Reading state information... make is already the newest version (4.2.1-1.2). make set to manually installed. The following packages were automatically installed and are no longer required: gyp javascript-common libbrotli1 libc-ares2 libjs-inherits libjs-is-typedarray libssl-dev libuv1 libuv1-dev node-abbrev node-ajv node-ansi node-ansi-align node-ansi-regex node-ansi-styles node-ansistyles node-aproba node-archy node-are-we-there-yet node-asn1 node-assert-plus node-asynckit node-aws-sign2 node-aws4 node-balanced-match node-bcrypt-pbkdf node-bluebird node-boxen node-brace-expansion node-builtin-modules node-builtins node-cacache node-call-limit node-camelcase node-caseless node-chalk node-chownr node-cli-boxes node-cliui node-clone node-co node-color-convert node-color-name node-combined-stream node-concat-map node-concat-stream node-config-chain node-console-control-strings node-copy-concurrently node-core-util-is node-cross-spawn node-cyclist node-dashdash node-decamelize node-decompress-response node-deep-extend node-defaults node-delayed-stream node-delegates node-detect-indent node-detect-newline node-duplexer3 node-duplexify node-ecc-jsbn node-editor node-encoding node-end-of-stream node-errno node-escape-string-regexp node-execa node-extend node-extsprintf node-find-up node-flush-write-stream node-forever-agent node-form-data node-from2 node-fs-vacuum node-fs-write-stream-atomic node-fs.realpath node-gauge node-get-caller-file node-get-stream node-getpass node-glob node-got node-graceful-fs node-har-schema node-har-validator node-has-flag node-has-symbol-support-x node-has-to-string-tag-x node-has-unicode node-hosted-git-info node-http-signature node-iconv-lite node-iferr node-import-lazy node-imurmurhash node-inflight node-inherits node-ini node-invert-kv node-is-builtin-module node-is-npm node-is-object node-is-plain-obj node-is-retry-allowed node-is-stream node-is-typedarray node-isarray node-isexe node-isstream node-isurl node-jsbn node-json-parse-better-errors node-json-schema node-json-stable-stringify node-json-stringify-safe node-jsonify node-jsonparse node-jsonstream node-jsprim node-latest-version node-lazy-property node-lcid node-libnpx node-locate-path node-lockfile node-lowercase-keys node-lru-cache node-mem node-mime-types node-mimic-fn node-mimic-response node-minimatch node-minimist node-mississippi node-mkdirp node-move-concurrently node-mute-stream node-node-uuid node-nopt node-normalize-package-data node-npm-package-arg node-npm-run-path node-npmlog node-oauth-sign node-object-assign node-once node-opener node-os-locale node-osenv node-p-cancelable node-p-finally node-p-limit node-p-locate node-p-timeout node-package-json node-parallel-transform node-path-exists node-path-is-absolute node-path-is-inside node-performance-now node-prepend-http node-process-nextick-args node-promise-inflight node-promzard node-proto-list node-prr node-pump node-pumpify node-punycode node-qs node-qw node-rc node-read node-read-package-json node-readable-stream node-registry-auth-token node-registry-url node-request node-require-directory node-require-main-filename node-resolve-from node-retry node-rimraf node-run-queue node-safe-buffer node-semver node-semver-diff node-set-blocking node-sha node-shebang-command node-shebang-regex node-signal-exit node-slash node-slide node-sorted-object node-spdx-correct node-spdx-expression-parse node-spdx-license-ids node-sshpk node-ssri node-stream-each node-stream-iterate node-stream-shift node-string-decoder node-string-width node-strip-ansi node-strip-eof node-strip-json-comments node-supports-color node-tar node-term-size node-text-table node-through node-through2 node-timed-out node-tough-cookie node-tunnel-agent node-tweetnacl node-typedarray node-uid-number node-unique-filename node-unpipe node-url-parse-lax node-url-to-options node-util-deprecate node-uuid node-validate-npm-package-license node-validate-npm-package-name node-verror node-wcwidth.js node-which node-which-module node-wide-align node-widest-line node-wrap-ansi node-wrappy node-write-file-atomic node-xdg-basedir node-xtend node-y18n node-yallist node-yargs node-yargs-parser nodejs-doc python-pkg-resources triggerhappy Use 'apt autoremove' to remove them. The following NEW packages will be installed: libattr1-dev 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 0 B/35.3 kB of archives. After this operation, 90.1 kB of additional disk space will be used. Selecting previously unselected package libattr1-dev:arm64. (Reading database ... 55884 files and directories currently installed.) Preparing to unpack .../libattr1-dev_1%3a2.4.48-4_arm64.deb ... Unpacking libattr1-dev:arm64 (1:2.4.48-4) ... Setting up libattr1-dev:arm64 (1:2.4.48-4) ... Processing triggers for man-db (2.8.5-2) ... Updating FireMotD available updates count ... + return 0 + echo OK OK + install_zram_code /opt/zram + local zramGit=https://github.com/ecdye/zram-config ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:12:16_AEST [openHABian] Installing ZRAM code... ' 2020-12-28_09:12:16_AEST [openHABian] Installing ZRAM code... + cond_redirect mkdir -p /opt/zram + [[ -n '' ]] + echo -e '\n\033[90;01m$ mkdir -p /opt/zram \033[39;49;00m' $ mkdir -p /opt/zram + mkdir -p /opt/zram + return 0 + [[ -d /opt/zram/zram-config ]] + cond_redirect update_git_repo /opt/zram/zram-config openHAB + [[ -n '' ]] + echo -e '\n\033[90;01m$ update_git_repo /opt/zram/zram-config openHAB \033[39;49;00m' $ update_git_repo /opt/zram/zram-config openHAB + update_git_repo /opt/zram/zram-config openHAB + local branch + local path + branch=openHAB + path=/opt/zram/zram-config ++ timestamp ++ date +%F_%T_%Z ++ basename /opt/zram/zram-config + echo -n '2020-12-28_09:12:16_AEST [openHABian] Updating zram-config, openHAB branch from git... ' 2020-12-28_09:12:16_AEST [openHABian] Updating zram-config, openHAB branch from git... + cond_redirect git -C /opt/zram/zram-config fetch origin + [[ -n '' ]] + echo -e '\n\033[90;01m$ git -C /opt/zram/zram-config fetch origin \033[39;49;00m' $ git -C /opt/zram/zram-config fetch origin + git -C /opt/zram/zram-config fetch origin + return 0 + cond_redirect git -C /opt/zram/zram-config fetch --tags --force --prune + [[ -n '' ]] + echo -e '\n\033[90;01m$ git -C /opt/zram/zram-config fetch --tags --force --prune \033[39;49;00m' $ git -C /opt/zram/zram-config fetch --tags --force --prune + git -C /opt/zram/zram-config fetch --tags --force --prune + return 0 + cond_redirect git -C /opt/zram/zram-config reset --hard origin/openHAB + [[ -n '' ]] + echo -e '\n\033[90;01m$ git -C /opt/zram/zram-config reset --hard origin/openHAB \033[39;49;00m' $ git -C /opt/zram/zram-config reset --hard origin/openHAB + git -C /opt/zram/zram-config reset --hard origin/openHAB HEAD is now at b10def2 Add openHAB specific changes + return 0 + cond_redirect git -C /opt/zram/zram-config clean --force -x -d + [[ -n '' ]] + echo -e '\n\033[90;01m$ git -C /opt/zram/zram-config clean --force -x -d \033[39;49;00m' $ git -C /opt/zram/zram-config clean --force -x -d + git -C /opt/zram/zram-config clean --force -x -d + return 0 + cond_redirect git -C /opt/zram/zram-config checkout openHAB + [[ -n '' ]] + echo -e '\n\033[90;01m$ git -C /opt/zram/zram-config checkout openHAB \033[39;49;00m' $ git -C /opt/zram/zram-config checkout openHAB + git -C /opt/zram/zram-config checkout openHAB Already on 'openHAB' Your branch is up to date with 'origin/openHAB'. + return 0 + echo OK OK + return 0 + echo OK OK ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:12:18_AEST [openHABian] Setting up OverlayFS... ' 2020-12-28_09:12:18_AEST [openHABian] Setting up OverlayFS... + cond_redirect make --always-make --directory=/opt/zram/zram-config/overlayfs-tools + [[ -n '' ]] + echo -e '\n\033[90;01m$ make --always-make --directory=/opt/zram/zram-config/overlayfs-tools \033[39;49;00m' $ make --always-make --directory=/opt/zram/zram-config/overlayfs-tools + make --always-make --directory=/opt/zram/zram-config/overlayfs-tools make: Entering directory '/opt/zram/zram-config/overlayfs-tools' gcc -Wall -std=c99 -c main.c gcc -Wall -std=c99 -c logic.c gcc -Wall -std=c99 -c sh.c gcc -lm main.o logic.o sh.o -o overlay make: Leaving directory '/opt/zram/zram-config/overlayfs-tools' + return 0 + cond_redirect mkdir -p /usr/local/lib/zram-config/ + [[ -n '' ]] + echo -e '\n\033[90;01m$ mkdir -p /usr/local/lib/zram-config/ \033[39;49;00m' $ mkdir -p /usr/local/lib/zram-config/ + mkdir -p /usr/local/lib/zram-config/ + return 0 + cond_redirect install -m 755 /opt/zram/zram-config/overlayfs-tools/overlay /usr/local/lib/zram-config/overlay + [[ -n '' ]] + echo -e '\n\033[90;01m$ install -m 755 /opt/zram/zram-config/overlayfs-tools/overlay /usr/local/lib/zram-config/overlay \033[39;49;00m' $ install -m 755 /opt/zram/zram-config/overlayfs-tools/overlay /usr/local/lib/zram-config/overlay + install -m 755 /opt/zram/zram-config/overlayfs-tools/overlay /usr/local/lib/zram-config/overlay + return 0 + echo OK OK ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:12:21_AEST [openHABian] Setting up ZRAM... ' 2020-12-28_09:12:21_AEST [openHABian] Setting up ZRAM... + cond_redirect install -m 755 /opt/zram/zram-config/zram-config /usr/local/sbin + [[ -n '' ]] + echo -e '\n\033[90;01m$ install -m 755 /opt/zram/zram-config/zram-config /usr/local/sbin \033[39;49;00m' $ install -m 755 /opt/zram/zram-config/zram-config /usr/local/sbin + install -m 755 /opt/zram/zram-config/zram-config /usr/local/sbin + return 0 + cond_redirect install -m 644 /opt/openhabian/includes/ztab /etc/ztab + [[ -n '' ]] + echo -e '\n\033[90;01m$ install -m 644 /opt/openhabian/includes/ztab /etc/ztab \033[39;49;00m' $ install -m 644 /opt/openhabian/includes/ztab /etc/ztab + install -m 644 /opt/openhabian/includes/ztab /etc/ztab + return 0 + cond_redirect mkdir -p /usr/local/share/zram-config/log + [[ -n '' ]] + echo -e '\n\033[90;01m$ mkdir -p /usr/local/share/zram-config/log \033[39;49;00m' $ mkdir -p /usr/local/share/zram-config/log + mkdir -p /usr/local/share/zram-config/log + return 0 + cond_redirect install -m 644 /opt/zram/zram-config/zram-config.logrotate /etc/logrotate.d/zram-config + [[ -n '' ]] + echo -e '\n\033[90;01m$ install -m 644 /opt/zram/zram-config/zram-config.logrotate /etc/logrotate.d/zram-config \033[39;49;00m' $ install -m 644 /opt/zram/zram-config/zram-config.logrotate /etc/logrotate.d/zram-config + install -m 644 /opt/zram/zram-config/zram-config.logrotate /etc/logrotate.d/zram-config + return 0 + echo OK OK + [[ -f /etc/systemd/system/find3server.service ]] + openhab_is_installed + openhab2_is_installed ++ dpkg -s openhab2 ++ grep Status ++ cut '-d ' -f2 + [[ '' == \i\n\s\t\a\l\l ]] + return 1 + openhab3_is_installed ++ dpkg -s openhab ++ grep Status ++ cut '-d ' -f2 + [[ install == \i\n\s\t\a\l\l ]] + return 0 + return 0 + [[ -f /etc/amanda/openhab-dir/disklist ]] + [[ -f /etc/amanda/openhab-aws/disklist ]] ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:12:21_AEST [openHABian] Setting up ZRAM service... ' 2020-12-28_09:12:21_AEST [openHABian] Setting up ZRAM service... + cond_redirect install -m 644 /opt/zram/zram-config/zram-config.service /etc/systemd/system/zram-config.service + [[ -n '' ]] + echo -e '\n\033[90;01m$ install -m 644 /opt/zram/zram-config/zram-config.service /etc/systemd/system/zram-config.service \033[39;49;00m' $ install -m 644 /opt/zram/zram-config/zram-config.service /etc/systemd/system/zram-config.service + install -m 644 /opt/zram/zram-config/zram-config.service /etc/systemd/system/zram-config.service + return 0 + cond_redirect systemctl -q daemon-reload + cond_redirect install -m 644 /opt/openhabian/includes/sysctl-zram.conf /etc/sysctl.d/zram.conf + [[ -n '' ]] + echo -e '\n\033[90;01m$ install -m 644 /opt/openhabian/includes/sysctl-zram.conf /etc/sysctl.d/zram.conf \033[39;49;00m' $ install -m 644 /opt/openhabian/includes/sysctl-zram.conf /etc/sysctl.d/zram.conf + install -m 644 /opt/openhabian/includes/sysctl-zram.conf /etc/sysctl.d/zram.conf + return 0 + running_in_docker + grep -qs 'docker\|lxc' /proc/1/cgroup + [[ -f /.dockerenv ]] + return 1 + running_on_github + [[ -n '' ]] + return 1 + cond_redirect sysctl -q -p /etc/sysctl.d/zram.conf + [[ -n '' ]] + echo -e '\n\033[90;01m$ sysctl -q -p /etc/sysctl.d/zram.conf \033[39;49;00m' $ sysctl -q -p /etc/sysctl.d/zram.conf + sysctl -q -p /etc/sysctl.d/zram.conf + return 0 + cond_redirect systemctl mask unattended-upgrades.service + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl mask unattended-upgrades.service \033[39;49;00m' $ systemctl mask unattended-upgrades.service + systemctl mask unattended-upgrades.service Created symlink /etc/systemd/system/unattended-upgrades.service → /dev/null. + return 0 + cond_redirect systemctl enable --now zram-config.service + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl enable --now zram-config.service \033[39;49;00m' $ systemctl enable --now zram-config.service + systemctl enable --now zram-config.service Created symlink /etc/systemd/system/basic.target.wants/zram-config.service → /etc/systemd/system/zram-config.service. + return 0 + echo OK OK + return 0 + echo OK OK + exim_setup + [[ -n 1 ]] + [[ -z '' ]] ++ timestamp ++ date +%F_%T_%Z + echo '2020-12-28_09:12:22_AEST [openHABian] Beginning Mail Transfer Agent setup... CANCELED (no configuration provided)' 2020-12-28_09:12:22_AEST [openHABian] Beginning Mail Transfer Agent setup... CANCELED (no configuration provided) + return 0 + install_tailscale install + local 'installText=We will install the tailscale VPN client on your system. Use it to securely interconnect multiple openHAB(ian) instances.\nSee https://tailscale.com/blog/how-tailscale-works/ for a comprehensive explanation how it creates a secure VPN. For personal use, you can get a free solo service from tailscale.com.' + local 'removeText=We will remove the tailscale VPN client from your system.\n\nDouble-check ~/.ssh/authorized_keys and eventually remove the admin key.' + local serviceTargetDir=/lib/systemd/system + [[ -n 1 ]] + [[ ! -v '' ]] ++ timestamp ++ date +%F_%T_%Z + echo '2020-12-28_09:12:22_AEST [openHABian] tailscale VPN installation... SKIPPED (no preauthkey defined)' 2020-12-28_09:12:22_AEST [openHABian] tailscale VPN installation... SKIPPED (no preauthkey defined) + return 1 + setup_mirror_SD install + [[ -n 1 ]] + [[ -z '' ]] ++ timestamp ++ date +%F_%T_%Z + echo '2020-12-28_09:12:22_AEST [openHABian] Setting up automated SD mirroring and backup... CANCELED (no configuration provided)' 2020-12-28_09:12:22_AEST [openHABian] Setting up automated SD mirroring and backup... CANCELED (no configuration provided) + return 0 + install_cleanup ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:12:22_AEST [openHABian] Cleaning up... ' 2020-12-28_09:12:22_AEST [openHABian] Cleaning up... + cond_redirect systemctl -q daemon-reload + cond_redirect apt-get clean + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get clean \033[39;49;00m' $ apt-get clean + apt-get clean + return 0 + cond_redirect apt-get autoremove --yes + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get autoremove --yes \033[39;49;00m' $ apt-get autoremove --yes + apt-get autoremove --yes Reading package lists... Building dependency tree... Reading state information... The following packages will be REMOVED: gyp javascript-common libbrotli1 libc-ares2 libjs-inherits libjs-is-typedarray libssl-dev libuv1 libuv1-dev node-abbrev node-ajv node-ansi node-ansi-align node-ansi-regex node-ansi-styles node-ansistyles node-aproba node-archy node-are-we-there-yet node-asn1 node-assert-plus node-asynckit node-aws-sign2 node-aws4 node-balanced-match node-bcrypt-pbkdf node-bluebird node-boxen node-brace-expansion node-builtin-modules node-builtins node-cacache node-call-limit node-camelcase node-caseless node-chalk node-chownr node-cli-boxes node-cliui node-clone node-co node-color-convert node-color-name node-combined-stream node-concat-map node-concat-stream node-config-chain node-console-control-strings node-copy-concurrently node-core-util-is node-cross-spawn node-cyclist node-dashdash node-decamelize node-decompress-response node-deep-extend node-defaults node-delayed-stream node-delegates node-detect-indent node-detect-newline node-duplexer3 node-duplexify node-ecc-jsbn node-editor node-encoding node-end-of-stream node-errno node-escape-string-regexp node-execa node-extend node-extsprintf node-find-up node-flush-write-stream node-forever-agent node-form-data node-from2 node-fs-vacuum node-fs-write-stream-atomic node-fs.realpath node-gauge node-get-caller-file node-get-stream node-getpass node-glob node-got node-graceful-fs node-har-schema node-har-validator node-has-flag node-has-symbol-support-x node-has-to-string-tag-x node-has-unicode node-hosted-git-info node-http-signature node-iconv-lite node-iferr node-import-lazy node-imurmurhash node-inflight node-inherits node-ini node-invert-kv node-is-builtin-module node-is-npm node-is-object node-is-plain-obj node-is-retry-allowed node-is-stream node-is-typedarray node-isarray node-isexe node-isstream node-isurl node-jsbn node-json-parse-better-errors node-json-schema node-json-stable-stringify node-json-stringify-safe node-jsonify node-jsonparse node-jsonstream node-jsprim node-latest-version node-lazy-property node-lcid node-libnpx node-locate-path node-lockfile node-lowercase-keys node-lru-cache node-mem node-mime-types node-mimic-fn node-mimic-response node-minimatch node-minimist node-mississippi node-mkdirp node-move-concurrently node-mute-stream node-node-uuid node-nopt node-normalize-package-data node-npm-package-arg node-npm-run-path node-npmlog node-oauth-sign node-object-assign node-once node-opener node-os-locale node-osenv node-p-cancelable node-p-finally node-p-limit node-p-locate node-p-timeout node-package-json node-parallel-transform node-path-exists node-path-is-absolute node-path-is-inside node-performance-now node-prepend-http node-process-nextick-args node-promise-inflight node-promzard node-proto-list node-prr node-pump node-pumpify node-punycode node-qs node-qw node-rc node-read node-read-package-json node-readable-stream node-registry-auth-token node-registry-url node-request node-require-directory node-require-main-filename node-resolve-from node-retry node-rimraf node-run-queue node-safe-buffer node-semver node-semver-diff node-set-blocking node-sha node-shebang-command node-shebang-regex node-signal-exit node-slash node-slide node-sorted-object node-spdx-correct node-spdx-expression-parse node-spdx-license-ids node-sshpk node-ssri node-stream-each node-stream-iterate node-stream-shift node-string-decoder node-string-width node-strip-ansi node-strip-eof node-strip-json-comments node-supports-color node-tar node-term-size node-text-table node-through node-through2 node-timed-out node-tough-cookie node-tunnel-agent node-tweetnacl node-typedarray node-uid-number node-unique-filename node-unpipe node-url-parse-lax node-url-to-options node-util-deprecate node-uuid node-validate-npm-package-license node-validate-npm-package-name node-verror node-wcwidth.js node-which node-which-module node-wide-align node-widest-line node-wrap-ansi node-wrappy node-write-file-atomic node-xdg-basedir node-xtend node-y18n node-yallist node-yargs node-yargs-parser nodejs-doc python-pkg-resources triggerhappy 0 upgraded, 0 newly installed, 250 to remove and 0 not upgraded. After this operation, 26.8 MB disk space will be freed. (Reading database ... 55906 files and directories currently installed.) Removing gyp (0.1+20180428git4d467626-3) ... Removing javascript-common (11) ... Removing libbrotli1:arm64 (1.0.7-2+deb10u1) ... Removing libc-ares2:arm64 (1.14.0-1) ... Removing node-cacache (11.3.2-2) ... Removing node-mississippi (3.0.0-1) ... Removing node-through2 (2.0.5-2) ... Removing node-flush-write-stream (1.0.3-1) ... Removing node-pumpify (1.5.1-1) ... Removing node-request (2.88.1-2) ... Removing node-is-typedarray (1.0.0-2) ... Removing libjs-is-typedarray (1.0.0-2) ... Removing libssl-dev:arm64 (1.1.1d-0+deb10u4) ... Removing libuv1-dev:arm64 (1.24.1-1) ... Removing libuv1:arm64 (1.24.1-1) ... Removing node-nopt (3.0.6-3) ... Removing node-abbrev (1.1.1-1) ... Removing node-har-validator (5.1.0-1) ... Removing node-ajv (5.0.0-1) ... Removing node-ansi (0.3.0-3) ... Removing node-boxen (1.2.2-1) ... Removing node-ansi-align (2.0.0-1) ... Removing node-libnpx (10.2.0+repack-1) ... Removing node-yargs (10.0.3-2) ... Removing node-cliui (4.1.0-1) ... Removing node-wrap-ansi (4.0.0-1) ... Removing node-chalk (2.3.0-2) ... Removing node-ansi-styles (3.2.1-1) ... Removing node-ansistyles (0.1.3-1) ... Removing node-npmlog (4.1.2-1) ... Removing node-gauge (2.7.4-1) ... Removing node-move-concurrently (1.0.1-2) ... Removing node-archy (1.0.0-2) ... Removing node-are-we-there-yet (1.1.4-1) ... Removing node-http-signature (1.2.0-1) ... Removing node-sshpk (1.13.1+dfsg-2) ... Removing node-asn1 (0.2.3-1) ... Removing node-dashdash (1.14.1-2) ... Removing node-jsprim (1.4.0-1) ... Removing node-verror (1.10.0-1) ... Removing node-form-data (2.3.2-2) ... Removing node-asynckit (0.4.0-2) ... Removing node-aws-sign2 (0.7.1-1) ... Removing node-aws4 (1.8.0-1) ... Removing node-read-package-json (2.0.13-1) ... Removing node-copy-concurrently (1.0.5-4) ... Removing node-bcrypt-pbkdf (1.0.1-1) ... Removing node-bluebird (3.5.1+dfsg2-2) ... Removing node-normalize-package-data (2.4.0-1) ... Removing node-is-builtin-module (2.0.0-1) ... Removing node-builtin-modules (3.0.0-1) ... Removing node-npm-package-arg (6.0.0-2) ... Removing node-validate-npm-package-name (3.0.0-1) ... Removing node-builtins (1.0.3-1) ... Removing node-call-limit (1.1.0-1) ... Removing node-yargs-parser (11.1.1-1+deb10u1) ... Removing node-camelcase (5.0.0-1) ... Removing node-caseless (0.12.0-1) ... Removing node-tar (4.4.6+ds1-3) ... Removing node-chownr (1.1.1-1) ... Removing node-cli-boxes (1.0.0-1) ... Removing node-widest-line (1.2.2-1) ... Removing node-co (4.6.0-1) ... Removing node-color-convert (1.9.0-3) ... Removing node-color-name (1.1.3-1) ... Removing node-combined-stream (1.0.7-1) ... Removing node-concat-stream (1.6.2-1) ... Removing node-config-chain (1.1.11-1) ... Removing node-console-control-strings (1.1.0-1) ... Removing node-term-size (1.2.0+dfsg-2) ... Removing node-os-locale (2.0.0-1) ... Removing node-execa (0.10.0+dfsg-1) ... Removing node-cross-spawn (5.1.0-2) ... Removing node-parallel-transform (1.1.0-2) ... Removing node-cyclist (1.0.1-2) ... Removing node-decamelize (1.2.0-1) ... Removing node-latest-version (3.1.0-1) ... Removing node-package-json (4.0.1-1) ... Removing node-got (7.1.0-1) ... Removing node-decompress-response (3.3.0-1) ... Removing node-registry-url (3.1.0-1) ... Removing node-registry-auth-token (3.3.1-1) ... Removing node-rc (1.1.6-2) ... Removing node-deep-extend (0.4.1-2) ... Removing node-delayed-stream (0.0.5-1) ... Removing node-delegates (1.0.0-1) ... Removing node-detect-indent (5.0.0-1) ... Removing node-detect-newline (2.1.0-1) ... Removing node-duplexer3 (0.1.4-4) ... Removing node-duplexify (3.6.1-1) ... Removing node-ecc-jsbn (0.1.1-1) ... Removing node-editor (1.0.0-1) ... Removing node-encoding (0.1.12-2) ... Removing node-stream-each (1.2.2-2) ... Removing node-pump (3.0.0-1) ... Removing node-end-of-stream (1.4.1-1) ... Removing node-errno (0.1.4-1) ... Removing node-escape-string-regexp (1.0.5-1) ... Removing node-extend (3.0.2-1) ... Removing node-extsprintf (1.3.0-1) ... Removing node-find-up (2.1.0-1) ... Removing node-forever-agent (0.6.1-1) ... Removing node-from2 (2.3.0-1) ... Removing node-fs-vacuum (1.2.10-2) ... Removing node-fs-write-stream-atomic (1.0.10-4) ... Removing node-get-caller-file (1.0.2-1) ... Removing node-get-stream (3.0.0-1) ... Removing node-getpass (0.1.7-1) ... Removing node-write-file-atomic (2.3.0-1) ... Removing node-sha (2.0.1-1) ... Removing node-graceful-fs (4.1.11-1) ... Removing node-har-schema (2.0.0-1) ... Removing node-supports-color (4.4.0-2) ... Removing node-has-flag (2.0.0-1) ... Removing node-isurl (1.0.0-1) ... Removing node-has-to-string-tag-x (1.4.1+dfsg-1) ... Removing node-has-symbol-support-x (1.4.1+dfsg-1) ... Removing node-has-unicode (2.0.1-2) ... Removing node-hosted-git-info (2.7.1-1) ... Removing node-iconv-lite (0.4.13-2) ... Removing node-iferr (1.0.2-1) ... Removing node-import-lazy (3.0.0.REALLY.2.1.0-1) ... Removing node-unique-filename (1.1.0+ds-2) ... Removing node-imurmurhash (0.1.4-1) ... Removing node-ini (1.3.5-1) ... Removing node-lcid (1.0.0-1) ... Removing node-invert-kv (1.0.0-1) ... Removing node-is-npm (1.0.0-1) ... Removing node-is-object (1.0.1-1) ... Removing node-is-plain-obj (1.1.0-1) ... Removing node-is-retry-allowed (1.1.0-1) ... Removing node-is-stream (1.1.0-1) ... Removing node-which (1.3.0-2) ... Removing node-isexe (2.0.0-4) ... Removing node-isstream (0.1.2+dfsg-1) ... Removing node-jsbn (1.1.0-1) ... Removing node-json-parse-better-errors (1.0.2-2) ... Removing node-json-schema (0.2.3-1) ... Removing node-json-stable-stringify (1.0.1-1) ... Removing node-json-stringify-safe (5.0.1-1) ... Removing node-jsonify (0.0.0-1) ... Removing node-jsonstream (1.3.2-1) ... Removing node-jsonparse (1.3.1-6) ... Removing node-lazy-property (1.0.0-3) ... Removing node-locate-path (2.0.0-1) ... Removing node-lockfile (1.0.4-1) ... Removing node-lowercase-keys (1.0.0-2) ... Removing node-lru-cache (5.1.1-4) ... Removing node-mem (1.1.0-1) ... Removing node-mime-types (2.1.21-1) ... Removing node-mimic-fn (1.1.0-1) ... Removing node-mimic-response (1.0.0-1) ... Removing node-minimist (1.2.0-1+deb10u1) ... Removing node-mkdirp (0.5.1-1) ... Removing node-promzard (0.3.0-1) ... Removing node-read (1.0.7-1) ... Removing node-mute-stream (0.0.8-1) ... Removing node-node-uuid (3.3.2-2) ... Removing node-npm-run-path (2.0.2-2) ... Removing node-oauth-sign (0.9.0-1) ... Removing node-object-assign (4.1.1-2) ... Removing node-opener (1.4.3-1) ... Removing node-osenv (0.1.5-1) ... Removing node-p-cancelable (0.3.0-1) ... Removing node-p-timeout (1.2.0-1) ... Removing node-p-finally (1.0.0-2) ... Removing node-p-locate (2.0.0-1) ... Removing node-p-limit (1.1.0-1) ... Removing node-path-exists (3.0.0-1) ... Removing node-path-is-inside (1.0.2-1) ... Removing node-performance-now (2.1.0+debian-1) ... Removing node-url-parse-lax (1.0.0-1) ... Removing node-prepend-http (2.0.0-1) ... Removing node-promise-inflight (1.0.1-1) ... Removing node-proto-list (1.2.4-1) ... Removing node-prr (1.0.1-1) ... Removing node-tough-cookie (2.3.4+dfsg-1) ... Removing node-punycode (2.1.1-2) ... Removing node-qs (6.5.2-1) ... Removing node-qw (1.0.1-1) ... Removing node-require-directory (2.1.1-1) ... Removing node-require-main-filename (1.0.1-1) ... Removing node-resolve-from (4.0.0-1) ... Removing node-retry (0.10.1-1) ... Removing node-tunnel-agent (0.6.1-1) ... Removing node-semver-diff (2.1.0-2) ... Removing node-semver (5.5.1-1) ... Removing node-set-blocking (2.0.0-1) ... Removing node-shebang-command (1.2.0-1) ... Removing node-shebang-regex (2.0.0-1) ... Removing node-signal-exit (3.0.2-1) ... Removing node-slash (1.0.0-1) ... Removing node-slide (1.1.6-2) ... Removing node-sorted-object (2.0.1-1) ... Removing node-validate-npm-package-license (3.0.1-1) ... Removing node-spdx-correct (1.0.2-1) ... Removing node-spdx-expression-parse (1.0.4-1) ... Removing node-spdx-license-ids (1.2.2-1) ... Removing node-ssri (5.2.4-2) ... Removing node-stream-iterate (1.2.0-4) ... Removing node-stream-shift (1.0.0-1) ... Removing node-strip-eof (1.0.0-2) ... Removing node-strip-json-comments (2.0.1-2) ... Removing node-text-table (0.2.0-2) ... Removing node-through (2.3.8-1) ... Removing node-timed-out (4.0.1-4) ... Removing node-tweetnacl (0.14.5+dfsg-3) ... Removing node-typedarray (0.0.6-1) ... Removing node-uid-number (0.0.6-1) ... Removing node-unpipe (1.0.0-1) ... Removing node-url-to-options (1.0.1-1) ... Removing node-uuid (3.3.2-2) ... Removing node-which-module (2.0.0-1) ... Removing node-wide-align (1.1.0-1) ... Removing node-xdg-basedir (3.0.0-1) ... Removing node-xtend (4.0.1-2) ... Removing node-y18n (3.2.1-2) ... Removing node-yallist (3.0.3-1) ... Removing nodejs-doc (10.21.0~dfsg-1~deb10u1) ... Removing python-pkg-resources (40.8.0-1) ... Removing triggerhappy (0.5.0-1) ... Warning: Stopping triggerhappy.service, but it can still be activated by: triggerhappy.socket Removing node-readable-stream (2.3.6-1) ... Removing node-run-queue (1.0.3-1) ... Removing node-aproba (1.2.0-1) ... Removing node-assert-plus (1.0.0-1) ... Removing node-rimraf (2.6.2-1) ... Removing node-glob (7.1.3-2) ... Removing node-minimatch (3.0.4-3) ... Removing node-brace-expansion (1.1.8-1) ... Removing node-balanced-match (0.4.2-1) ... Removing node-string-width (2.1.1-1) ... Removing node-wcwidth.js (1.0.0-1) ... Removing node-defaults (1.0.3-1) ... Removing node-clone (2.1.2-1) ... Removing node-concat-map (0.0.1-1) ... Removing node-core-util-is (1.0.2-1) ... Removing node-fs.realpath (1.0.0-1) ... Removing node-inflight (1.0.6-1) ... Removing node-isarray (2.0.4-1) ... Removing node-once (1.4.0-3) ... Removing node-path-is-absolute (1.0.0-1) ... Removing node-process-nextick-args (2.0.0-1) ... Removing node-string-decoder (1.2.0-1) ... Removing node-safe-buffer (5.1.2-1) ... Removing node-util-deprecate (1.0.2-1) ... Removing node-wrappy (1.0.2-1) ... Removing node-inherits (2.0.3-1) ... Removing libjs-inherits (2.0.3-1) ... Removing node-strip-ansi (4.0.0-1) ... Removing node-ansi-regex (3.0.0-1) ... Processing triggers for man-db (2.8.5-2) ... Processing triggers for libc-bin (2.28-10) ... Updating FireMotD available updates count ... + return 0 + echo OK OK + cd / + rm -f /opt/openHABian-install-inprogress + touch /opt/openHABian-install-successful ++ timestamp ++ date +%F_%T_%Z + echo '2020-12-28_09:14:45_AEST [openHABian] Execution of '\''openhabian-config unattended'\'' completed.' 2020-12-28_09:14:45_AEST [openHABian] Execution of 'openhabian-config unattended' completed. ++ timestamp ++ date +%F_%T_%Z + echo -n '2020-12-28_09:14:45_AEST [openHABian] Waiting for openHAB to become ready on openHABianDevice... ' 2020-12-28_09:14:45_AEST [openHABian] Waiting for openHAB to become ready on openHABianDevice... + tryUntil 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' 20 10 + local cmd + local attempts + local interval + cmd='curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' + attempts=20 + interval=10 + [[ 20 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 19 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 18 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 17 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 16 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 15 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 14 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 13 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 12 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 11 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 10 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 9 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 8 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 7 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 6 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 5 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 4 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 3 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 2 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 1 -le 0 ]] + cond_echo '\nexecuting curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\'' \c' + [[ -z 1 ]] + eval 'curl --silent --head http://openHABianDevice:8080/start/index |& grep -qs '\''HTTP/1.1 200 OK'\''' ++ curl --silent --head http://openHABianDevice:8080/start/index ++ grep -qs 'HTTP/1.1 200 OK' + out=1 + [[ 1 -eq 0 ]] + sleep 10 + [[ -z 1 ]] + (( attempts-=1 )) + [[ 0 -le 0 ]] + [[ -z 1 ]] + return 0 + echo FAILED FAILED + exit 1