I’ve had an issue where I wasn’t sure if my dynamic DNS provider registered properly. I then realized that I have a piKVM attached to one of my servers that boots on powerup, even if the server does not. I could utilize this piKVM to help me out.
Thanks to inspiration from Chris Dzombak I was able to whip up a little script that runs on startup. This script waits 5 minutes to allow for my firewall and modem to boot up, then sends a pushover notification to let me know the piKVM is online and what its external IP address is.
To get it working on the piKVM I had to enter into RW mode, write and save the script, add execute permissions to the script, then configure a systemd service to run the script at startup.
Here is the script, saved under /root/boot-pushover.sh
#!/usr/bin/env bash set -eu #Wait 5 minutes to allow router bootup sleep 300 TOKEN="PUSHOVER_APPLICATION_TOKEN" USER="PUSHOVER_USER_TOKEN" EXTERNAL_IP="$(curl ifconfig.me)" MESSAGE="$(hostname) is online. External IP: $EXTERNAL_IP" #Send pushover command to alert it's up and send its external IP curl -s \ --form-string "token=$TOKEN" \ --form-string "user=$USER" \ --form-string "message=$MESSAGE" \ https://api.pushover.net/1/messages.json
chmod +x /root/boot-pushover.sh
Here is the systemd service, saved under /etc/systemd/system/boot-pushover-notification.service
[Service] Type=oneshot ExecStart=/root/boot-pushover.sh RemainAfterExit=yes User=root Group=root RestartSec=15 Restart=on-failure [Unit] Wants=network.target After=network.target nss-lookup.target [Install] WantedBy=multi-user.target
Reload daemons & enable startup:
systemctl daemon-reload systemctl enable boot-pushover-notification.service
Test by exiting rw mode and rebooting the piKVM:
It works really well!