From b4ab2f1a8644743f5c393aaa035c8772098a8820 Mon Sep 17 00:00:00 2001 From: Todd E Johnson Date: Fri, 12 Jul 2019 21:35:25 -0500 Subject: [PATCH 1/4] Add requires to unmetered-connection.service --- etc/systemd/system/restic-backup.timer | 2 ++ etc/systemd/system/restic-check.timer | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/etc/systemd/system/restic-backup.timer b/etc/systemd/system/restic-backup.timer index c492c33..d2fb57d 100644 --- a/etc/systemd/system/restic-backup.timer +++ b/etc/systemd/system/restic-backup.timer @@ -1,5 +1,7 @@ [Unit] Description=Backup with restic on schedule +Requires=unmetered-connection.service +After=unmetered-connection.service [Timer] OnCalendar=daily diff --git a/etc/systemd/system/restic-check.timer b/etc/systemd/system/restic-check.timer index b637948..b7ef662 100644 --- a/etc/systemd/system/restic-check.timer +++ b/etc/systemd/system/restic-check.timer @@ -1,9 +1,11 @@ [Unit] Description=Check restic backup Backblaze B2 for errors on a schedule +Requires=unmetered-connection.service +After=unmetered-connection.service [Timer] OnCalendar=monthly Persistent=true [Install] -WantedBy=timers.target \ No newline at end of file +WantedBy=timers.target From d8c0a8d2d6a86d1bce3ea287a9f5908df88e187c Mon Sep 17 00:00:00 2001 From: Todd E Johnson Date: Mon, 15 Jul 2019 20:45:24 -0500 Subject: [PATCH 2/4] 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 + From e1d7d5cd2012ea93f10f301d0976b3a18f44acbd Mon Sep 17 00:00:00 2001 From: Todd E Johnson Date: Mon, 15 Jul 2019 21:09:06 -0500 Subject: [PATCH 3/4] Fix restic-check serivces to not start on metered connections --- etc/systemd/system/restic-check.service | 1 + etc/systemd/system/restic-check.timer | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/systemd/system/restic-check.service b/etc/systemd/system/restic-check.service index 7f90e78..b0d68ea 100644 --- a/etc/systemd/system/restic-check.service +++ b/etc/systemd/system/restic-check.service @@ -2,6 +2,7 @@ Description=Check restic backup Backblaze B2 for errors OnFailure=status-email-user@%n.service Conflicts=restic.service +Requires=nm-unmetered-connection.service [Service] Type=simple diff --git a/etc/systemd/system/restic-check.timer b/etc/systemd/system/restic-check.timer index b7ef662..e43f2ac 100644 --- a/etc/systemd/system/restic-check.timer +++ b/etc/systemd/system/restic-check.timer @@ -1,7 +1,6 @@ [Unit] Description=Check restic backup Backblaze B2 for errors on a schedule -Requires=unmetered-connection.service -After=unmetered-connection.service +Requires=nm-unmetered-connection.service [Timer] OnCalendar=monthly From 5751d900209d5f4bfe8d8d6e6775915b8a714548 Mon Sep 17 00:00:00 2001 From: Todd E Johnson Date: Tue, 23 Jul 2019 12:15:39 -0500 Subject: [PATCH 4/4] Add checks to see if dbus and NetworkManager are running --- usr/local/sbin/nm-unmetered-connection.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/usr/local/sbin/nm-unmetered-connection.sh b/usr/local/sbin/nm-unmetered-connection.sh index aa68fd0..dd6cbc2 100644 --- a/usr/local/sbin/nm-unmetered-connection.sh +++ b/usr/local/sbin/nm-unmetered-connection.sh @@ -1,5 +1,8 @@ #!/bin/bash +systemctl is-active dbus.service >/dev/null 2>&1 || exit 0 +systemctl is-active NetworkManager.service >/dev/null 2>&1 || exit 0 + metered_status=$(dbus-send --system --print-reply=literal \ --system --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \