Execute a call to an API before reboot and after boot
Hi
I want to call an api with curl before reboot or shutdown -r now and after boot for maintenance propose, only when I call reboot manually and came out with this.
It works, but it's calling the api on shutdown now/halt too.
The ideia it to call this api to disable monitoring on reboot and enable it on boot.
Any suggestions?
[Unit] Description = Maintenance mode Before = reboot.target After = network-online.target boot-complete.target Requires = network-online.target Conflicts = halt.target poweroff.target [Service] User = root Group = root Type = oneshot RemainAfterExit = yes ExecStart = "/usr/local/bin/maintenance-on.sh" ExecStop = "/usr/local/bin/maintenance-off.sh" [Install] WantedBy = multi-user.target
Thanks
Comments
Cron job for on reboot.
Can't think of a good way to do on shutdown though. Most stuff gets killed pretty fast on shutdown command being issued. If you have a 2nd machine you could just watch till the machine goes down I guess via ping
Maybe another approach could be defining your script as alias for
shutdown
, trigger your API call there and then hand off the further processing to the "real binary"?My guess would be the ExecStop is getting called when network-online goes away. If you must use systemd, I would suggest you have one unit file with ExecStart=maintenance-on.sh before reboot.target, and a second unit file with ExecStart=maintenance-off.sh after network-online.target.
However, I would also recommend that before reboot, you make an API call that disables monitoring for 5 minutes instead of turning it off entirely. Otherwise you will end up with a situation where the instance fails to come back up properly after a reboot and your monitoring happily ignores it because the startup script never ran to turn monitoring back on.
I’d just create an alias for the shutdown script, and a cron entry for boot up script as suggested before.
Yes, a cron @reboot entry and a function/alias should be an easier solution
Thanks for you feedback