init
This commit is contained in:
commit
95c1295818
|
@ -0,0 +1,6 @@
|
|||
#/bin/sh
|
||||
|
||||
get_updates() {
|
||||
LANG=en apt-get --just-print upgrade | grep "not upgraded" | grep -Eo '[0-9]{1,4}' | tr ' ' '\n' | awk '{sum+=$0}END{print sum}'
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
get_date() {
|
||||
LANG=fr_FR.UTF-8 date
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
get_df() {
|
||||
df -h
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
get_hostname() {
|
||||
hostname
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
get_mount() {
|
||||
mount
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
get_smart() {
|
||||
smartctl -H "$1"
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
render_template() {
|
||||
envsubst < "$TEMPLATE/$1.tpl"
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
get_uptime() {
|
||||
uptime | sed 's/^\s//'
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
#!/bin/sh
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/sh
|
||||
|
||||
if ! apt-get update >/dev/null 2>/dev/null; then
|
||||
printf "La mise à jour de la liste des paquets à échoué.\n"
|
||||
fi
|
||||
|
||||
if ! which envsubst 2>/dev/null >/dev/null; then
|
||||
printf "Le programme \`envsubst\` est nécessaire. Installer \`gettext-base\`.\n"
|
||||
|
||||
exit 1
|
||||
fi
|
|
@ -0,0 +1,45 @@
|
|||
#!/bin/sh
|
||||
|
||||
PATH=/usr/sbin:/usr/bin:/sbin:/bin
|
||||
|
||||
export _SCRIPT_NAME="$(realpath "$0")"
|
||||
export _SCRIPT_PATH="$(dirname "$_SCRIPT_NAME")"
|
||||
|
||||
# export EMAIL_RECIPIENT=you@example.com
|
||||
# export EMAIL_SENDER=system@example.com
|
||||
# export EMAIL_SUBJECT="[$(hostname)] Rapport journalier"
|
||||
|
||||
# export HTML_OUTPUT=/tmp/report.html
|
||||
# export MUNIN_DIRECTORY=/var/cache/munin/www/localhost/localhost
|
||||
# export SMART_DEVICES="/dev/sda /dev/sdb /dev/sdc"
|
||||
|
||||
if [ -z "$TEMPLATE" ]; then
|
||||
export TEMPLATE="$_SCRIPT_PATH/templates/deblan"
|
||||
fi
|
||||
|
||||
cd "$_SCRIPT_PATH"
|
||||
|
||||
./hooks/on-start
|
||||
|
||||
REPORT="$(
|
||||
./scripts/header
|
||||
./scripts/system
|
||||
./scripts/mount
|
||||
./scripts/df
|
||||
./scripts/smart
|
||||
./scripts/footer
|
||||
)"
|
||||
|
||||
if [ -n "$HTML_OUTPUT" ]; then
|
||||
export REPORT
|
||||
|
||||
./scripts/html
|
||||
fi
|
||||
|
||||
if [ -n "$EMAIL_RECIPIENT" ]; then
|
||||
export REPORT
|
||||
|
||||
./scripts/email
|
||||
fi
|
||||
|
||||
./hooks/on-finish
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
|
||||
. ./helpers/template
|
||||
. ./helpers/df
|
||||
|
||||
export df="$(get_df)"
|
||||
|
||||
render_template df
|
|
@ -0,0 +1,22 @@
|
|||
#!/bin/sh
|
||||
|
||||
. ./helpers/template
|
||||
|
||||
export BOUNDARY="-$(date | md5sum | cut -d ' ' -f 1)"
|
||||
|
||||
(
|
||||
render_template mail
|
||||
|
||||
if [ -n "$MUNIN_DIRECTORY" -a -d "$MUNIN_DIRECTORY" ]; then
|
||||
cd "$MUNIN_DIRECTORY"
|
||||
|
||||
for file in *day.png; do
|
||||
export file
|
||||
export base64="$(base64 "$file")"
|
||||
|
||||
render_template mail-png-attachment
|
||||
done
|
||||
fi
|
||||
|
||||
printf "\n--%s--\n" "$BOUNDARY"
|
||||
)| sendmail "$EMAIL_RECIPIENT"
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
. ./helpers/template
|
||||
|
||||
render_template footer
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/sh
|
||||
|
||||
. ./helpers/template
|
||||
. ./helpers/hostname
|
||||
. ./helpers/date
|
||||
|
||||
export hostname="$(get_hostname)"
|
||||
export date="$(get_date)"
|
||||
|
||||
render_template header
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
. ./helpers/template
|
||||
|
||||
export content="$REPORT"
|
||||
|
||||
render_template plain > "$HTML_OUTPUT"
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
|
||||
. ./helpers/template
|
||||
. ./helpers/mount
|
||||
|
||||
export mount="$(get_mount)"
|
||||
|
||||
render_template mount
|
|
@ -0,0 +1,12 @@
|
|||
#!/bin/sh
|
||||
|
||||
. ./helpers/template
|
||||
. ./helpers/smart
|
||||
|
||||
for device in $SMART_DEVICES; do
|
||||
export device
|
||||
export result="$(get_smart "$device")"
|
||||
|
||||
render_template smart
|
||||
done
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
#!/bin/sh
|
||||
|
||||
. ./helpers/template
|
||||
. ./helpers/uptime
|
||||
. ./helpers/apt
|
||||
|
||||
updates=$(get_updates)
|
||||
|
||||
export uptime="$(get_uptime)"
|
||||
|
||||
if [ $updates -gt 1 ]; then
|
||||
export apt_color="#ff5e1e"
|
||||
export apt_text="$(printf "%d paquets à mettre à jour" $updates)"
|
||||
elif [ $updates -eq 1 ]; then
|
||||
export apt_color="#ff5e1e"
|
||||
export apt_text="$(printf "%d paquet à mettre à jour" $updates)"
|
||||
else
|
||||
export apt_color="#77c81b"
|
||||
export apt_text="Système à jour"
|
||||
fi
|
||||
|
||||
render_template system
|
|
@ -0,0 +1,7 @@
|
|||
<div class="title">
|
||||
Espace(s) disque(s)
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<pre>${df}</pre>
|
||||
</div>
|
|
@ -0,0 +1,3 @@
|
|||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<style>
|
||||
html {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: #191e2b;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: Calibri;
|
||||
background: #191e2b;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 10px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
padding: 0;
|
||||
margin: 0 0 0 15px;
|
||||
list-style: none;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.title {
|
||||
background: #283044;
|
||||
color: #fff;
|
||||
padding: 15px;
|
||||
margin: 0;
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 10px;
|
||||
background: #191e2b;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div style="padding: 10px; background: #3b4664;">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td valign="middle" width="245">
|
||||
<img src="https://upload.deblan.org/u/2019-05/5cefbc0a.png">
|
||||
</td>
|
||||
<td width="10"></td>
|
||||
<td valign="middle" style="font-size: 22px">
|
||||
<ul>
|
||||
<li><strong>${hostname}</strong></li>
|
||||
<li>${date}</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
|
@ -0,0 +1,9 @@
|
|||
--${BOUNDARY}
|
||||
Content-type: image/png;
|
||||
name="${file}"
|
||||
Content-Transfer-Encoding: base64
|
||||
Content-ID: <${file}>
|
||||
Content-Disposition: attachement;
|
||||
filename="${file}"
|
||||
|
||||
${base64}
|
|
@ -0,0 +1,10 @@
|
|||
From: ${EMAIL_SENDER}
|
||||
To: ${EMAIL_RECIPIENT}
|
||||
Subject: ${EMAIL_RECIPIENT}
|
||||
Content-type: multipart/mixed;
|
||||
boundary="${BOUNDARY}"
|
||||
--$BOUNDARY
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
${REPORT}
|
|
@ -0,0 +1,7 @@
|
|||
<div class="title">
|
||||
Point(s) de montage(s)
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<pre>${mount}</pre>
|
||||
</div>
|
|
@ -0,0 +1 @@
|
|||
${content}
|
|
@ -0,0 +1,7 @@
|
|||
<div class="title">
|
||||
Smart ${device}
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<pre>${result}</pre>
|
||||
</div>
|
|
@ -0,0 +1,9 @@
|
|||
<div class="title">
|
||||
Système
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<span style="color: ${apt_color}; font-weight:bold">${apt_text}</span>
|
||||
|
||||
<pre>${uptime}</pre>
|
||||
</div>
|
Ladataan…
Viittaa uudesa ongelmassa