I was thinking how to automatically rollback network misconfigurations with etckeeper and systemd.


# etckeeper commit
# $EDITOR /etc/systemd/network/wired.network
# systemctl restart systemd-networkd
You broke the network! I'm calling your mom!
Here's your broken config:
$(cat broken_file)
$(etckeeper vcs reset -- old_config_file)

# $EDITOR /etc/systemd/network/wired.network
# systemctl restart systemd-networkd

Currently i'm stuck how to hook into restart event.

gdbus monitor --system --dest org.freedesktop --object-path /org/freedesktop

Doesn't output anything when running

# systemctl restart systemd-networkd

Script itself could be something like:

  • hook into systemd restart and if possible, directly into restart systemd-networkd
  • Read the hook information if it contains that restart failed, otherwise read systemctl is-active systemd-networkd
  • Rename broken file to $file.broken
  • Restore: etckeeper vcs reset -- $file
  • systemctl stop automatic-net-configuration-rollback.service (so that there's no infinite loop)
  • systemctl restart systemd-networkd
    • Works -> systemctl start automatic-net-configuration-rollback.service
    • Doesn't -> echo Rollbacked config file doesn't work either. Repair manually and start automatic rollback after it works.

Is this possible and/or does systemd already have this kind of service built-in or has someone made one already? My google searches came up empty.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.