diff --git a/rootfs/etc/cont-init.d/00-fix-logs.sh b/rootfs/etc/cont-init.d/00-fix-logs.sh index 6d58949..d83c6af 100644 --- a/rootfs/etc/cont-init.d/00-fix-logs.sh +++ b/rootfs/etc/cont-init.d/00-fix-logs.sh @@ -1,4 +1,5 @@ #!/usr/bin/with-contenv sh +# shellcheck shell=sh # Fix access rights to stdout and stderr chown ${PUID}:${PGID} /proc/self/fd/1 /proc/self/fd/2 || true diff --git a/rootfs/etc/cont-init.d/01-fix-uidgid.sh b/rootfs/etc/cont-init.d/01-fix-uidgid.sh index d8f58a4..44e7ab0 100644 --- a/rootfs/etc/cont-init.d/01-fix-uidgid.sh +++ b/rootfs/etc/cont-init.d/01-fix-uidgid.sh @@ -1,4 +1,6 @@ #!/usr/bin/with-contenv sh +# shellcheck shell=sh +set -e if [ -n "${PGID}" ] && [ "${PGID}" != "$(id -g librenms)" ]; then echo "Switching to PGID ${PGID}..." diff --git a/rootfs/etc/cont-init.d/02-fix-perms.sh b/rootfs/etc/cont-init.d/02-fix-perms.sh index 71c5b31..44f20c1 100644 --- a/rootfs/etc/cont-init.d/02-fix-perms.sh +++ b/rootfs/etc/cont-init.d/02-fix-perms.sh @@ -1,4 +1,6 @@ #!/usr/bin/with-contenv sh +# shellcheck shell=sh +set -e echo "Fixing perms..." mkdir -p /data \ diff --git a/rootfs/etc/cont-init.d/03-config.sh b/rootfs/etc/cont-init.d/03-config.sh index 95544b5..5829d1d 100644 --- a/rootfs/etc/cont-init.d/03-config.sh +++ b/rootfs/etc/cont-init.d/03-config.sh @@ -1,4 +1,6 @@ #!/usr/bin/with-contenv bash +# shellcheck shell=bash +set -e # From https://github.com/docker-library/mariadb/blob/master/docker-entrypoint.sh#L21-L41 # usage: file_env VAR [DEFAULT] @@ -17,7 +19,7 @@ file_env() { if [ "${!var:-}" ]; then val="${!var}" elif [ "${!fileVar:-}" ]; then - val="$(< "${!fileVar}")" + val="$(<"${!fileVar}")" fi export "$var"="$val" unset "$fileVar" @@ -47,14 +49,14 @@ LIBRENMS_BASE_URL=${LIBRENMS_BASE_URL:-/} # Timezone echo "Setting timezone to ${TZ}..." ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime -echo ${TZ} > /etc/timezone +echo ${TZ} >/etc/timezone # PHP echo "Setting PHP-FPM configuration..." sed -e "s/@MEMORY_LIMIT@/$MEMORY_LIMIT/g" \ -e "s/@UPLOAD_MAX_SIZE@/$UPLOAD_MAX_SIZE/g" \ -e "s/@CLEAR_ENV@/$CLEAR_ENV/g" \ - /tpls/etc/php7/php-fpm.d/www.conf > /etc/php7/php-fpm.d/www.conf + /tpls/etc/php7/php-fpm.d/www.conf >/etc/php7/php-fpm.d/www.conf echo "Setting PHP INI configuration..." sed -i "s|memory_limit.*|memory_limit = ${MEMORY_LIMIT}|g" /etc/php7/php.ini @@ -64,7 +66,7 @@ sed -i "s|;max_input_vars.*|max_input_vars = ${MAX_INPUT_VARS}|g" /etc/php7/php. # OpCache echo "Setting OpCache configuration..." sed -e "s/@OPCACHE_MEM_SIZE@/$OPCACHE_MEM_SIZE/g" \ - /tpls/etc/php7/conf.d/opcache.ini > /etc/php7/conf.d/opcache.ini + /tpls/etc/php7/conf.d/opcache.ini >/etc/php7/conf.d/opcache.ini # Nginx echo "Setting Nginx configuration..." @@ -72,7 +74,7 @@ sed -e "s#@UPLOAD_MAX_SIZE@#$UPLOAD_MAX_SIZE#g" \ -e "s#@REAL_IP_FROM@#$REAL_IP_FROM#g" \ -e "s#@REAL_IP_HEADER@#$REAL_IP_HEADER#g" \ -e "s#@LOG_IP_VAR@#$LOG_IP_VAR#g" \ - /tpls/etc/nginx/nginx.conf > /etc/nginx/nginx.conf + /tpls/etc/nginx/nginx.conf >/etc/nginx/nginx.conf if [ "$LISTEN_IPV6" != "true" ]; then sed -e '/listen \[::\]:/d' -i /etc/nginx/nginx.conf @@ -97,15 +99,15 @@ echo "Setting LibreNMS configuration..." # Env file if [ -z "$DB_HOST" ]; then - >&2 echo "ERROR: DB_HOST must be defined" + echo >&2 "ERROR: DB_HOST must be defined" exit 1 fi file_env 'DB_PASSWORD' if [ -z "$DB_PASSWORD" ]; then - >&2 echo "ERROR: Either DB_PASSWORD or DB_PASSWORD_FILE must be defined" + echo >&2 "ERROR: Either DB_PASSWORD or DB_PASSWORD_FILE must be defined" exit 1 fi -cat > ${LIBRENMS_PATH}/.env <${LIBRENMS_PATH}/.env < ${LIBRENMS_PATH}/config.d/directories.php <${LIBRENMS_PATH}/config.d/directories.php < ${LIBRENMS_PATH}/config.d/server.php <${LIBRENMS_PATH}/config.d/server.php < ${LIBRENMS_PATH}/config.d/user.php <${LIBRENMS_PATH}/config.d/user.php < ${LIBRENMS_PATH}/config.d/fping.php <${LIBRENMS_PATH}/config.d/fping.php < ${LIBRENMS_PATH}/config.d/ipmitool.php <${LIBRENMS_PATH}/config.d/ipmitool.php < ${LIBRENMS_PATH}/config.d/autoupdate.php <${LIBRENMS_PATH}/config.d/autoupdate.php < ${LIBRENMS_PATH}/config.d/services.php <${LIBRENMS_PATH}/config.d/services.php < ${LIBRENMS_PATH}/config.d/memcached.php <${LIBRENMS_PATH}/config.d/memcached.php < ${LIBRENMS_PATH}/config.d/rrdcached.php <${LIBRENMS_PATH}/config.d/rrdcached.php < ${LIBRENMS_PATH}/config.d/dispatcher.php <${LIBRENMS_PATH}/config.d/dispatcher.php < "/data/.env" <"/data/.env" <> "${LIBRENMS_PATH}/.env" +cat "/data/.env" >>"${LIBRENMS_PATH}/.env" chown librenms. /data/.env "${LIBRENMS_PATH}/.env" file_env 'DB_PASSWORD' if [ -z "$DB_PASSWORD" ]; then - >&2 echo "ERROR: Either DB_PASSWORD or DB_PASSWORD_FILE must be defined" + echo >&2 "ERROR: Either DB_PASSWORD or DB_PASSWORD_FILE must be defined" exit 1 fi @@ -58,13 +60,13 @@ unset DB_PASSWORD echo "Waiting ${DB_TIMEOUT}s for database to be ready..." counter=1 -while ! ${dbcmd} -e "show databases;" > /dev/null 2>&1; do +while ! ${dbcmd} -e "show databases;" >/dev/null 2>&1; do sleep 1 counter=$((counter + 1)) if [ ${counter} -gt ${DB_TIMEOUT} ]; then - >&2 echo "ERROR: Failed to connect to database on $DB_HOST" + echo >&2 "ERROR: Failed to connect to database on $DB_HOST" exit 1 - fi; + fi done echo "Database ready!" counttables=$(echo 'SHOW TABLES' | ${dbcmd} "$DB_NAME" | wc -l) @@ -83,7 +85,7 @@ if [ "${counttables}" -eq "0" ]; then fi mkdir -p /etc/services.d/nginx -cat > /etc/services.d/nginx/run </etc/services.d/nginx/run < /etc/services.d/php-fpm/run </etc/services.d/php-fpm/run < /etc/services.d/snmpd/run </etc/services.d/snmpd/run <>" file_env 'DB_PASSWORD' if [ -z "$DB_PASSWORD" ]; then - >&2 echo "ERROR: Either DB_PASSWORD or DB_PASSWORD_FILE must be defined" + echo >&2 "ERROR: Either DB_PASSWORD or DB_PASSWORD_FILE must be defined" exit 1 fi @@ -59,30 +61,30 @@ unset DB_PASSWORD echo "Waiting ${DB_TIMEOUT}s for database to be ready..." counter=1 -while ! ${dbcmd} -e "show databases;" > /dev/null 2>&1; do +while ! ${dbcmd} -e "show databases;" >/dev/null 2>&1; do sleep 1 counter=$((counter + 1)) if [ ${counter} -gt ${DB_TIMEOUT} ]; then - >&2 echo "ERROR: Failed to connect to database on $DB_HOST" + echo >&2 "ERROR: Failed to connect to database on $DB_HOST" exit 1 - fi; + fi done echo "Database ready!" -while ! ${dbcmd} -e "desc $DB_NAME.poller_cluster;" > /dev/null 2>&1; do +while ! ${dbcmd} -e "desc $DB_NAME.poller_cluster;" >/dev/null 2>&1; do sleep 1 counter=$((counter + 1)) if [ ${counter} -gt ${DB_TIMEOUT} ]; then - >&2 echo "ERROR: Table $DB_NAME.poller_cluster does not exist on $DB_HOST" + echo >&2 "ERROR: Table $DB_NAME.poller_cluster does not exist on $DB_HOST" exit 1 - fi; + fi done # Node ID if [ ! -f "/data/.env" ]; then - >&2 echo "ERROR: /data/.env file does not exist. Please run the main container first" + echo >&2 "ERROR: /data/.env file does not exist. Please run the main container first" exit 1 fi -cat "/data/.env" >> "${LIBRENMS_PATH}/.env" +cat "/data/.env" >>"${LIBRENMS_PATH}/.env" if [ -n "$DISPATCHER_NODE_ID" ]; then echo "NODE_ID: $DISPATCHER_NODE_ID" sed -i "s|^NODE_ID=.*|NODE_ID=$DISPATCHER_NODE_ID|g" "${LIBRENMS_PATH}/.env" @@ -90,11 +92,11 @@ fi # Redis if [ -z "$REDIS_HOST" ] && [ -z "$REDIS_SENTINEL" ]; then - >&2 echo "ERROR: REDIS_HOST or REDIS_SENTINEL must be defined" + echo >&2 "ERROR: REDIS_HOST or REDIS_SENTINEL must be defined" exit 1 elif [ -n "$REDIS_HOST" ]; then -echo "Setting Redis" - cat >> ${LIBRENMS_PATH}/.env <>${LIBRENMS_PATH}/.env <> ${LIBRENMS_PATH}/.env <>${LIBRENMS_PATH}/.env < /etc/services.d/dispatcher/run </etc/services.d/dispatcher/run < /etc/services.d/syslogng/run </etc/services.d/syslogng/run <> ${CRONTAB_PATH}/librenms +echo "${LIBRENMS_DAILY_SCHEDULE} cd /opt/librenms/ && bash daily.sh" >>${CRONTAB_PATH}/librenms if [ "$LIBRENMS_WEATHERMAP" = "true" ] && [ -n "$LIBRENMS_WEATHERMAP_SCHEDULE" ]; then echo "Creating LibreNMS Weathermap cron task with the following period fields: $LIBRENMS_WEATHERMAP_SCHEDULE" - echo "${LIBRENMS_WEATHERMAP_SCHEDULE} php -f /opt/librenms/html/plugins/Weathermap/map-poller.php" >> ${CRONTAB_PATH}/librenms + echo "${LIBRENMS_WEATHERMAP_SCHEDULE} php -f /opt/librenms/html/plugins/Weathermap/map-poller.php" >>${CRONTAB_PATH}/librenms fi # Fix perms @@ -34,7 +36,7 @@ chmod -R 0644 ${CRONTAB_PATH} # Create service mkdir -p /etc/services.d/cron -cat > /etc/services.d/cron/run </etc/services.d/cron/run < /etc/services.d/snmptrapd/run </etc/services.d/snmptrapd/run <