2 # Copyright (C) 2016 Ian Kelling
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
18 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
21 cbase
=/var
/local
/cron-errors
25 Usage: sysd-log-once [-ERRORS] SERVICE COMMAND
27 Use to wrap systemd timers and to email on repeated failure & success after failure
29 Stores error counts in $c\$error_count
31 -ERRORS: ERRORS is the number of failurs to accumulate before mailing the error
46 arr
=($glob); file="${arr[0]}"; [[ $glob != "$file" ]] ||
file=
48 [[ -d $cbase ]] || mkdir
-p $cbase
50 cursor
=$
(journalctl
--show-cursor -qn0|
sed 's/^\s*--\scursor:\s*//')
54 if [[ $file == $c$errors ]]; then
55 echo |
mail -s "$HOSTNAME: $service success" $u@localhost
61 if (( i
< errors
)); then
65 if [[ $file == $c$errors ]]; then
66 journalctl
-u $service.service
--after-cursor=$cursor | \
67 mail -s "$HOSTNAME: $service failure" $u@localhost