mirror of
https://github.com/mag37/dockcheck.git
synced 2026-04-18 10:27:54 +00:00
Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8e92a3a4cb | ||
|
|
9ead0feb9f | ||
|
|
2e620cd2c0 | ||
|
|
fc7b2888f1 | ||
|
|
e15a8e9dbf | ||
|
|
342ff271ca | ||
|
|
3f56af0c8a | ||
|
|
ab3aaf1140 | ||
|
|
80a81f59d6 | ||
|
|
ba3f436ac9 | ||
|
|
24438124eb | ||
|
|
e39ea0748f | ||
|
|
ab30f22343 | ||
|
|
d39badea36 | ||
|
|
9a1f2aa7c7 | ||
|
|
15d3a96b2c | ||
|
|
fbd27d6e37 | ||
|
|
7bd5f87ed1 | ||
|
|
e24cba0078 | ||
|
|
886379dc7d |
25
README.md
25
README.md
@@ -15,7 +15,10 @@
|
|||||||
<h4 align="center">With features like excluding specific containers, filter by name, auto-prune dangling images and more.</h4</h3>
|
<h4 align="center">With features like excluding specific containers, filter by name, auto-prune dangling images and more.</h4</h3>
|
||||||
|
|
||||||
|
|
||||||
### :pushpin: Recent changes:
|
### :bell: Recent changes
|
||||||
|
- **v0.3.2**: Added a notify function to wrap a notify-script, currently DSM/Ssmtp + template script.
|
||||||
|
- **v0.3.1**: Addded option `-m` , monochrome mode - no printf color codes.
|
||||||
|
- **v0.3.0**: Added option `-d N`, age (days) new images have to be before being pulled and updated.
|
||||||
- **v0.2.6**: regctl check / download logic changed. Now using the scripts directory as primary location.
|
- **v0.2.6**: regctl check / download logic changed. Now using the scripts directory as primary location.
|
||||||
- **v0.2.5**: Added a new option `-s` to include stopped containers in the check for updates.
|
- **v0.2.5**: Added a new option `-s` to include stopped containers in the check for updates.
|
||||||
- **v0.2.4**: Fixed a bug with the Exclude-logic to only exclude exact matches. Added a counter.
|
- **v0.2.4**: Fixed a bug with the Exclude-logic to only exclude exact matches. Added a counter.
|
||||||
@@ -27,7 +30,7 @@
|
|||||||
- **v0.1.9:** Fixed custom env-support.
|
- **v0.1.9:** Fixed custom env-support.
|
||||||
___
|
___
|
||||||
|
|
||||||
## Dependencies:
|
## Dependencies
|
||||||
Running docker (duh) and compose, either standalone or plugin.
|
Running docker (duh) and compose, either standalone or plugin.
|
||||||
[`regclient/regctl`](https://github.com/regclient/regclient) (Licensed under [Apache-2.0 License](http://www.apache.org/licenses/LICENSE-2.0))
|
[`regclient/regctl`](https://github.com/regclient/regclient) (Licensed under [Apache-2.0 License](http://www.apache.org/licenses/LICENSE-2.0))
|
||||||
User will be prompted to download `regctl` if not in `PATH` or `PWD`
|
User will be prompted to download `regctl` if not in `PATH` or `PWD`
|
||||||
@@ -40,13 +43,14 @@ ___
|
|||||||
```
|
```
|
||||||
$ ./dockcheck.sh -h
|
$ ./dockcheck.sh -h
|
||||||
Syntax: dockcheck.sh [OPTION] [part of name to filter]
|
Syntax: dockcheck.sh [OPTION] [part of name to filter]
|
||||||
Example: dockcheck.sh -a -e nextcloud,heimdall
|
Example: dockcheck.sh -y -d 10 -e nextcloud,heimdall
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
-h Print this Help.
|
-h Print this Help.
|
||||||
-a|y Automatic updates, without interaction.
|
-a|y Automatic updates, without interaction.
|
||||||
-n No updates, only checking availability.
|
-n No updates, only checking availability.
|
||||||
-e Exclude containers, separated by comma.
|
-e X Exclude containers, separated by comma.
|
||||||
|
-d N Only update to new images that are N+ days old. Lists too recent with +prefix. 2xSlower.
|
||||||
-p Auto-Prune dangling images after update.
|
-p Auto-Prune dangling images after update.
|
||||||
-r Allow updating images for docker run, wont update the container.
|
-r Allow updating images for docker run, wont update the container.
|
||||||
-s Include stopped containers in the check. (Logic: docker ps -a).
|
-s Include stopped containers in the check. (Logic: docker ps -a).
|
||||||
@@ -65,15 +69,17 @@ Containers with updates available:
|
|||||||
2) syncthing
|
2) syncthing
|
||||||
3) whoogle-search
|
3) whoogle-search
|
||||||
|
|
||||||
|
|
||||||
Choose what containers to update:
|
Choose what containers to update:
|
||||||
Enter number(s) separated by comma, [a] for all - [q] to quit:
|
Enter number(s) separated by comma, [a] for all - [q] to quit:
|
||||||
|
|
||||||
```
|
```
|
||||||
Then it proceedes to run `pull` and `up -d` on every container with updates.
|
Then it proceedes to run `pull` and `up -d` on every container with updates.
|
||||||
After the updates are complete, you'll get prompted if you'd like to prune dangling images.
|
After the updates are complete, you'll get prompted if you'd like to prune dangling images.
|
||||||
|
|
||||||
### `-r flag` :warning: disclaimer and warning:
|
### Notifications:
|
||||||
|
|
||||||
|
A simple email notification function is added, with a generic example and DSM/Ssmtp script by [yoyoma2](https://github.com/yoyoma2). Further addons are welcome, suggestions or PR!
|
||||||
|
|
||||||
|
### :warning: `-r flag` disclaimer and warning
|
||||||
**Wont auto-update the containers, only their images. (compose is recommended)**
|
**Wont auto-update the containers, only their images. (compose is recommended)**
|
||||||
`docker run` dont support using new images just by restarting a container.
|
`docker run` dont support using new images just by restarting a container.
|
||||||
Containers need to be manually stopped, removed and created again to run on the new image.
|
Containers need to be manually stopped, removed and created again to run on the new image.
|
||||||
@@ -90,9 +96,8 @@ Just a brief, slimmed down version of the script to only print what containers g
|
|||||||
dockcheck is created and released under the [GNU GPL v3.0](https://www.gnu.org/licenses/gpl-3.0-standalone.html) license.
|
dockcheck is created and released under the [GNU GPL v3.0](https://www.gnu.org/licenses/gpl-3.0-standalone.html) license.
|
||||||
___
|
___
|
||||||
|
|
||||||
## Check out a spinoff brother-project:
|
### Check out a spinoff project: [Palleri/DCW](https://github.com/Palleri/DCW) for a WebUI-front with exporters and notifications.
|
||||||
### [Palleri/DCW](https://github.com/Palleri/DCW) for a WebUI-front with exporters and notifications.
|
|
||||||
|
|
||||||
## Special Thanks:
|
## Special Thanks
|
||||||
- :bison: [t0rnis](https://github.com/t0rnis)
|
- :bison: [t0rnis](https://github.com/t0rnis)
|
||||||
- :leopard: [Palleri](https://github.com/Palleri)
|
- :leopard: [Palleri](https://github.com/Palleri)
|
||||||
|
|||||||
90
dockcheck.sh
90
dockcheck.sh
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
VERSION="v0.2.6"
|
VERSION="v0.3.2"
|
||||||
### ChangeNotes: Logic change on regctl check/download. Will match the scripts workdir.
|
### ChangeNotes: Added a notify function - template and email script (DSM etc)
|
||||||
Github="https://github.com/mag37/dockcheck"
|
Github="https://github.com/mag37/dockcheck"
|
||||||
RawUrl="https://raw.githubusercontent.com/mag37/dockcheck/main/dockcheck.sh"
|
RawUrl="https://raw.githubusercontent.com/mag37/dockcheck/main/dockcheck.sh"
|
||||||
|
|
||||||
@@ -14,31 +14,47 @@ ScriptWorkDir="$(dirname "$ScriptPath")"
|
|||||||
LatestRelease="$(curl -s -r 0-50 $RawUrl | sed -n "/VERSION/s/VERSION=//p" | tr -d '"')"
|
LatestRelease="$(curl -s -r 0-50 $RawUrl | sed -n "/VERSION/s/VERSION=//p" | tr -d '"')"
|
||||||
LatestChanges="$(curl -s -r 0-200 $RawUrl | sed -n "/ChangeNotes/s/### ChangeNotes: //p")"
|
LatestChanges="$(curl -s -r 0-200 $RawUrl | sed -n "/ChangeNotes/s/### ChangeNotes: //p")"
|
||||||
|
|
||||||
|
[ -s $ScriptWorkDir/notify.sh ] && source $ScriptWorkDir/notify.sh
|
||||||
|
|
||||||
### Help Function:
|
### Help Function:
|
||||||
Help() {
|
Help() {
|
||||||
echo "Syntax: dockcheck.sh [OPTION] [part of name to filter]"
|
echo "Syntax: dockcheck.sh [OPTION] [part of name to filter]"
|
||||||
echo "Example: dockcheck.sh -a -e nextcloud,heimdall"
|
echo "Example: dockcheck.sh -y -d 10 -e nextcloud,heimdall"
|
||||||
echo
|
echo
|
||||||
echo "Options:"
|
echo "Options:"
|
||||||
echo "-h Print this Help."
|
|
||||||
echo "-a|y Automatic updates, without interaction."
|
echo "-a|y Automatic updates, without interaction."
|
||||||
|
echo "-d N Only update to new images that are N+ days old. Lists too recent with +prefix and age. 2xSlower."
|
||||||
|
echo "-e X Exclude containers, separated by comma."
|
||||||
|
echo "-h Print this Help."
|
||||||
|
echo "-m Monochrome mode, no printf color codes."
|
||||||
echo "-n No updates, only checking availability."
|
echo "-n No updates, only checking availability."
|
||||||
echo "-e Exclude containers, separated by comma."
|
|
||||||
echo "-p Auto-Prune dangling images after update."
|
echo "-p Auto-Prune dangling images after update."
|
||||||
echo "-r Allow updating images for docker run, wont update the container"
|
echo "-r Allow updating images for docker run, wont update the container"
|
||||||
echo "-s Include stopped containers in the check. (Logic: docker ps -a)"
|
echo "-s Include stopped containers in the check. (Logic: docker ps -a)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
### Colors:
|
||||||
|
c_red="\033[0;31m"
|
||||||
|
c_green="\033[0;32m"
|
||||||
|
c_yellow="\033[0;33m"
|
||||||
|
c_blue="\033[0;34m"
|
||||||
|
c_teal="\033[0;36m"
|
||||||
|
c_reset="\033[0m"
|
||||||
|
|
||||||
|
|
||||||
Stopped=""
|
Stopped=""
|
||||||
while getopts "aynprhse:" options; do
|
while getopts "aynprhsme:d:" options; do
|
||||||
case "${options}" in
|
case "${options}" in
|
||||||
a|y) UpdYes="yes" ;;
|
a|y) AutoUp="yes" ;;
|
||||||
n) UpdYes="no" ;;
|
n) AutoUp="no" ;;
|
||||||
r) DrUp="yes" ;;
|
r) DRunUp="yes" ;;
|
||||||
p) PruneQ="yes" ;;
|
p) AutoPrune="yes" ;;
|
||||||
e) Exclude=${OPTARG} ;;
|
e) Exclude=${OPTARG} ;;
|
||||||
|
m) declare c_{red,green,yellow,blue,teal,reset}="" ;;
|
||||||
s) Stopped="-a" ;;
|
s) Stopped="-a" ;;
|
||||||
h|*) Help ; exit 0 ;;
|
d) DaysOld=${OPTARG}
|
||||||
|
if ! [[ $DaysOld =~ ^[0-9]+$ ]] ; then { printf "Days -d argument given (%s) is not a number.\n" "${DaysOld}" ; exit 2 ; } ; fi ;;
|
||||||
|
h|*) Help ; exit 2 ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
shift "$((OPTIND-1))"
|
shift "$((OPTIND-1))"
|
||||||
@@ -102,8 +118,19 @@ choosecontainers() {
|
|||||||
printf "\n"
|
printf "\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
datecheck() {
|
||||||
|
ImageDate=$($regbin image inspect "$RepoUrl" --format='{{.Created}}' | cut -d" " -f1 )
|
||||||
|
ImageAge=$((($(date +%s) - $(date -d "$ImageDate" +%s))/86400))
|
||||||
|
if [ $ImageAge -gt $DaysOld ] ; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
### Version check & initiate self update
|
### Version check & initiate self update
|
||||||
[[ "$VERSION" != "$LatestRelease" ]] && { printf "New version available! Local: %s - Latest: %s \n Change Notes: %s \n" "$VERSION" "$LatestRelease" "$LatestChanges" ; [[ -z "$UpdYes" ]] && self_update_select ; }
|
[[ "$VERSION" != "$LatestRelease" ]] && { printf "New version available! Local: %s - Latest: %s \n Change Notes: %s \n" "$VERSION" "$LatestRelease" "$LatestChanges" ; [[ -z "$AutoUp" ]] && self_update_select ; }
|
||||||
|
|
||||||
### Set $1 to a variable for name filtering later.
|
### Set $1 to a variable for name filtering later.
|
||||||
SearchName="$1"
|
SearchName="$1"
|
||||||
@@ -158,7 +185,7 @@ done
|
|||||||
|
|
||||||
### Listing typed exclusions:
|
### Listing typed exclusions:
|
||||||
if [[ -n ${Excludes[*]} ]] ; then
|
if [[ -n ${Excludes[*]} ]] ; then
|
||||||
printf "\n\033[0;34mExcluding these names:\033[0m\n"
|
printf "\n%bExcluding these names:%b\n" $c_blue $c_reset
|
||||||
printf "%s\n" "${Excludes[@]}"
|
printf "%s\n" "${Excludes[@]}"
|
||||||
printf "\n"
|
printf "\n"
|
||||||
fi
|
fi
|
||||||
@@ -172,7 +199,15 @@ for i in $(docker ps $Stopped --filter "name=$SearchName" --format '{{.Names}}')
|
|||||||
LocalHash=$(docker image inspect "$RepoUrl" --format '{{.RepoDigests}}')
|
LocalHash=$(docker image inspect "$RepoUrl" --format '{{.RepoDigests}}')
|
||||||
### Checking for errors while setting the variable:
|
### Checking for errors while setting the variable:
|
||||||
if RegHash=$($regbin image digest --list "$RepoUrl" 2>/dev/null) ; then
|
if RegHash=$($regbin image digest --list "$RepoUrl" 2>/dev/null) ; then
|
||||||
if [[ "$LocalHash" = *"$RegHash"* ]] ; then NoUpdates+=("$i"); else GotUpdates+=("$i"); fi
|
if [[ "$LocalHash" = *"$RegHash"* ]] ; then
|
||||||
|
NoUpdates+=("$i")
|
||||||
|
else
|
||||||
|
if [[ -n "$DaysOld" ]] && ! datecheck ; then
|
||||||
|
NoUpdates+=("+$i ${ImageAge}d")
|
||||||
|
else
|
||||||
|
GotUpdates+=("$i")
|
||||||
|
fi
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
GotErrors+=("$i")
|
GotErrors+=("$i")
|
||||||
fi
|
fi
|
||||||
@@ -189,27 +224,28 @@ UpdCount="${#GotUpdates[@]}"
|
|||||||
|
|
||||||
### List what containers got updates or not
|
### List what containers got updates or not
|
||||||
if [[ -n ${NoUpdates[*]} ]] ; then
|
if [[ -n ${NoUpdates[*]} ]] ; then
|
||||||
printf "\n\033[0;32mContainers on latest version:\033[0m\n"
|
printf "\n%bContainers on latest version:%b\n" "$c_green" "$c_reset"
|
||||||
printf "%s\n" "${NoUpdates[@]}"
|
printf "%s\n" "${NoUpdates[@]}"
|
||||||
fi
|
fi
|
||||||
if [[ -n ${GotErrors[*]} ]] ; then
|
if [[ -n ${GotErrors[*]} ]] ; then
|
||||||
printf "\n\033[0;31mContainers with errors, wont get updated:\033[0m\n"
|
printf "\n%bContainers with errors, wont get updated:%b\n" "$c_red" "$c_reset"
|
||||||
printf "%s\n" "${GotErrors[@]}"
|
printf "%s\n" "${GotErrors[@]}"
|
||||||
fi
|
fi
|
||||||
if [[ -n ${GotUpdates[*]} ]] ; then
|
if [[ -n ${GotUpdates[*]} ]] ; then
|
||||||
printf "\n\033[0;33mContainers with updates available:\033[0m\n"
|
printf "\n%bContainers with updates available:%b\n" "$c_yellow" "$c_reset"
|
||||||
[[ -z "$UpdYes" ]] && options || printf "%s\n" "${GotUpdates[@]}"
|
[[ -z "$AutoUp" ]] && options || printf "%s\n" "${GotUpdates[@]}"
|
||||||
|
[[ $(type -t send_notification) == function ]] && send_notification "${GotUpdates[@]}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
### Optionally get updates if there's any
|
### Optionally get updates if there's any
|
||||||
if [ -n "$GotUpdates" ] ; then
|
if [ -n "$GotUpdates" ] ; then
|
||||||
if [ -z "$UpdYes" ] ; then
|
if [ -z "$AutoUp" ] ; then
|
||||||
printf "\n\033[0;36mChoose what containers to update.\033[0m\n"
|
printf "\n%bChoose what containers to update.%b\n" "$c_teal" "$c_reset"
|
||||||
choosecontainers
|
choosecontainers
|
||||||
else
|
else
|
||||||
SelectedUpdates=( "${GotUpdates[@]}" )
|
SelectedUpdates=( "${GotUpdates[@]}" )
|
||||||
fi
|
fi
|
||||||
if [ "$UpdYes" == "${UpdYes#[Nn]}" ] ; then
|
if [ "$AutoUp" == "${AutoUp#[Nn]}" ] ; then
|
||||||
NumberofUpdates="${#SelectedUpdates[@]}"
|
NumberofUpdates="${#SelectedUpdates[@]}"
|
||||||
CurrentQue=0
|
CurrentQue=0
|
||||||
for i in "${SelectedUpdates[@]}"
|
for i in "${SelectedUpdates[@]}"
|
||||||
@@ -223,11 +259,11 @@ if [ -n "$GotUpdates" ] ; then
|
|||||||
ContImage=$(docker inspect "$i" --format='{{.Config.Image}}')
|
ContImage=$(docker inspect "$i" --format='{{.Config.Image}}')
|
||||||
### Checking if compose-values are empty - hence started with docker run:
|
### Checking if compose-values are empty - hence started with docker run:
|
||||||
if [ -z "$ContPath" ] ; then
|
if [ -z "$ContPath" ] ; then
|
||||||
if [ "$DrUp" == "yes" ] ; then
|
if [ "$DRunUp" == "yes" ] ; then
|
||||||
docker pull "$ContImage"
|
docker pull "$ContImage"
|
||||||
printf "%s\n" "$i got a new image downloaded, rebuild manually with preferred 'docker run'-parameters"
|
printf "%s\n" "$i got a new image downloaded, rebuild manually with preferred 'docker run'-parameters"
|
||||||
else
|
else
|
||||||
printf "\n\033[33;1m%s\033[0m has no compose labels, probably started with docker run - \033[33;1mskipping\033[0m\n\n" "$i"
|
printf "\n%b%s%b has no compose labels, probably started with docker run - %bskipping%b\n\n" "$c_yellow" "$i" "$c_reset" "$c_yellow" "$c_reset"
|
||||||
fi
|
fi
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
@@ -239,7 +275,7 @@ if [ -n "$GotUpdates" ] ; then
|
|||||||
fi
|
fi
|
||||||
### cd to the compose-file directory to account for people who use relative volumes, eg - ${PWD}/data:data
|
### cd to the compose-file directory to account for people who use relative volumes, eg - ${PWD}/data:data
|
||||||
cd "$ContPath" || { echo "Path error - skipping $i" ; continue ; }
|
cd "$ContPath" || { echo "Path error - skipping $i" ; continue ; }
|
||||||
printf "\n\033[0;36mNow updating (%s/%s): \033[0;34m%s\033[0m\n" "$CurrentQue" "$NumberofUpdates" "$i"
|
printf "\n%bNow updating (%s/%s): %b%s%b\n" "$c_teal" "$CurrentQue" "$NumberofUpdates" "$c_blue" "$i" "$c_reset"
|
||||||
docker pull "$ContImage"
|
docker pull "$ContImage"
|
||||||
### Reformat for multi-compose:
|
### Reformat for multi-compose:
|
||||||
IFS=',' read -r -a Confs <<< "$ComposeFile" ; unset IFS
|
IFS=',' read -r -a Confs <<< "$ComposeFile" ; unset IFS
|
||||||
@@ -252,9 +288,9 @@ if [ -n "$GotUpdates" ] ; then
|
|||||||
$DockerBin ${CompleteConfs[@]} up -d "$ContName" # unquoted array to allow split - rework?
|
$DockerBin ${CompleteConfs[@]} up -d "$ContName" # unquoted array to allow split - rework?
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
printf "\033[0;32mAll done!\033[0m\n"
|
printf "\n%bAll done!%b\n" "$c_green" "$c_reset"
|
||||||
[[ -z "$PruneQ" ]] && read -r -p "Would you like to prune dangling images? y/[n]: " PruneQ
|
[[ -z "$AutoPrune" ]] && read -r -p "Would you like to prune dangling images? y/[n]: " AutoPrune
|
||||||
[[ "$PruneQ" =~ [yY] ]] && docker image prune -f
|
[[ "$AutoPrune" =~ [yY] ]] && docker image prune -f
|
||||||
else
|
else
|
||||||
printf "\nNo updates installed, exiting.\n"
|
printf "\nNo updates installed, exiting.\n"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 333 KiB After Width: | Height: | Size: 404 KiB |
29
notify_DSM.sh
Normal file
29
notify_DSM.sh
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
### DISCLAIMER: This is a third party addition to dockcheck - best effort testing.
|
||||||
|
# Copy/rename this file to notify.sh to enable email notifications on synology DSM
|
||||||
|
# Modify to your liking - changing SendMailTo and Subject and content.
|
||||||
|
|
||||||
|
send_notification() {
|
||||||
|
Updates=("$@")
|
||||||
|
UpdToString=$( printf "%s\n" "${Updates[@]}" )
|
||||||
|
# change this to your usual destination for synology DSM notification emails
|
||||||
|
SendMailTo=me@mydomain.com
|
||||||
|
FromHost=$(hostname)
|
||||||
|
|
||||||
|
printf "\nSending email notification\n"
|
||||||
|
|
||||||
|
ssmtp $SendMailTo << __EOF
|
||||||
|
From: "$FromHost" <$SendMailTo>
|
||||||
|
date:$(date -R)
|
||||||
|
To: <$SendMailTo>
|
||||||
|
Subject: [diskstation] Some docker containers need to be updated
|
||||||
|
Content-Type: text/plain; charset=UTF-8; format=flowed
|
||||||
|
Content-Transfer-Encoding: 7bit
|
||||||
|
|
||||||
|
The following docker containers on $FromHost need to be updated:
|
||||||
|
|
||||||
|
$UpdToString
|
||||||
|
|
||||||
|
From $FromHost
|
||||||
|
|
||||||
|
__EOF
|
||||||
|
}
|
||||||
13
notify_generic.sh
Normal file
13
notify_generic.sh
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
### DISCLAIMER: This is a third party addition to dockcheck - best effort testing.
|
||||||
|
# Copy/rename this file to notify.sh to enable email/text notifications
|
||||||
|
# generic sample, the "Hello World" of notification addons
|
||||||
|
|
||||||
|
send_notification() {
|
||||||
|
Updates=("$@")
|
||||||
|
UpdToString=$( printf "%s\n" "${Updates[@]}" )
|
||||||
|
FromHost=$(hostname)
|
||||||
|
|
||||||
|
# platform specific notification code would go here
|
||||||
|
printf "\n%bGeneric notification addon:%b" "$c_green" "$c_reset"
|
||||||
|
printf "\nThe following docker containers on %s need to be updated:\n%s\n" "$FromHost" "$UpdToString"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user