Creating a Custom Uptime Monitor in Bash for Ubuntu Servers
Ditch the Pricey SaaS Subscriptions
Paying twenty bucks a month just to know if your server is breathing? Hard pass. SaaS monitoring tools are great. Until they aren't. They bloat your budget and overcomplicate the simple act of checking a pulse. Actually, you already have the ultimate tool built right into your Ubuntu box. Bash. A solid bash server status script does the exact same job. For zero dollars. Let's build one.
The Core Logic of a Ping Checker
We need a heartbeat. A simple loop that knocks on your server's front door and waits for an answer. That is your ubuntu ping checker in a nutshell. You don't need fancy API calls. A basic ping command is all it takes. If the ping succeeds, cool. Go back to sleep. If it fails, we have a situation. We wrap this logic in a neat little text file. Make it executable. Run it. Just like that, you have a baseline monitor. Short, sweet, and brutally effective.
Writing the Uptime Monitor Script Logs
A monitor that doesn't keep receipts is useless. When things go sideways at 3 AM, you need a paper trail. This is where your uptime monitor script earns its keep. We simply append the date, time, and failure status to a local text file. Boom. Done. No complex databases. No SQL queries. Just a flat file that tells you exactly when the lights went out.
Making It Scream With Webhooks
Logs are great for post-mortems. But you need to know right now when the server dies. Here's the thing. Email alerts are dead. They get buried in spam. Instead, we use curl to fire a payload directly into your Discord or Slack webhook. The script spots a failed ping, grabs the webhook URL, and blasts a red alert to your phone. It takes two lines of bash. Suddenly, your homemade script rivals the big corporate tools.
Systemd Makes It Immortal
Running a script in the foreground is amateur hour. You close the terminal, the script dies. Not what we want. We need this thing to survive reboots. To run silently in the shadows. Forget cron jobs for this. They run every minute at best. We want continuous loops. So we wrap our bash masterpiece in a systemd service. Create a service file, enable it, and start it. It becomes a permanent fixture of your OS. It watches. It waits. And it never sleeps.