From d8c0a8d2d6a86d1bce3ea287a9f5908df88e187c Mon Sep 17 00:00:00 2001 From: Todd E Johnson Date: Mon, 15 Jul 2019 20:45:24 -0500 Subject: [PATCH] Add nm-unmetered-connection checks --- .../system/nm-unmetered-connection.service | 7 +++++++ etc/systemd/system/restic-backup.service | 3 ++- etc/systemd/system/restic-backup.timer | 3 +-- usr/local/sbin/nm-unmetered-connection.sh | 16 ++++++++++++++++ 4 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 etc/systemd/system/nm-unmetered-connection.service create mode 100644 usr/local/sbin/nm-unmetered-connection.sh diff --git a/etc/systemd/system/nm-unmetered-connection.service b/etc/systemd/system/nm-unmetered-connection.service new file mode 100644 index 0000000..e2ce521 --- /dev/null +++ b/etc/systemd/system/nm-unmetered-connection.service @@ -0,0 +1,7 @@ +[Unit] +Description=Check if the current NetworkManager connection is metered + +[Service] +Type=oneshot +ExecStart=/usr/local/sbin/nm-unmetered-connection.sh + diff --git a/etc/systemd/system/restic-backup.service b/etc/systemd/system/restic-backup.service index 060be03..d0d3108 100644 --- a/etc/systemd/system/restic-backup.service +++ b/etc/systemd/system/restic-backup.service @@ -1,10 +1,11 @@ [Unit] Description=Backup with restic to Backblaze B2 OnFailure=status-email-user@%n.service +Requires=nm-unmetered-connection.service [Service] Type=simple Nice=10 ExecStart=/usr/local/sbin/restic_backup.sh # $HOME or $XDG_CACHE_HOME must be set for restic to find /root/.cache/restic/ -Environment="HOME=/root" \ No newline at end of file +Environment="HOME=/root" diff --git a/etc/systemd/system/restic-backup.timer b/etc/systemd/system/restic-backup.timer index d2fb57d..2e681ee 100644 --- a/etc/systemd/system/restic-backup.timer +++ b/etc/systemd/system/restic-backup.timer @@ -1,7 +1,6 @@ [Unit] Description=Backup with restic on schedule -Requires=unmetered-connection.service -After=unmetered-connection.service +Requires=nm-unmetered-connection.service [Timer] OnCalendar=daily diff --git a/usr/local/sbin/nm-unmetered-connection.sh b/usr/local/sbin/nm-unmetered-connection.sh new file mode 100644 index 0000000..aa68fd0 --- /dev/null +++ b/usr/local/sbin/nm-unmetered-connection.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +metered_status=$(dbus-send --system --print-reply=literal \ + --system --dest=org.freedesktop.NetworkManager \ + /org/freedesktop/NetworkManager \ + org.freedesktop.DBus.Properties.Get \ + string:org.freedesktop.NetworkManager string:Metered \ + | grep -o ".$") + +if [[ $metered_status =~ (1|3) ]]; then + echo Current connection is metered + exit 1 +else + exit 0 +fi +