curl + twitter + crontab = Happiness

10 11 18

Sat Mar 22 10:32:37 +0000 2008

I've always wanted to know how my servers are doing. I don't have time to check on every single one of them all of the time. In the past, this meant perhaps an automatic email sent to me at some specified time during the day.

But emails are annoying. RSS is definitely the technology that would be nice, but how to implement it?

Twitter is ideal for this purpose. Multiple people (admins?) can check the status of a server as it is updated, and you can lock it down so that only authorized people can view the status.

Updating is easy using the Twitter API through curl. I just wrote the following bash script to update a twitter feed for a specified user:
#!/bin/bash

USER="server"
PASS="password"
URL="http://twitter.com/statuses/update.xml"
STATUS="[`hostname`] `uptime`, `df -h / | grep -o -e '[0-9][0-9]*%'` HD used"

curl --basic --user $USER:$PASS --data status="$STATUS" $URL


This automatically sends updates that look like:
[servname] 11:23:20 up 7 days, 14:43, 1 user, load average: 0.18, 0.36, 0.17, 83% HD used


Then I name it something useful, like /root/twitter.sh, and add a crontab entry:
0 0 * * * /root/twitter.sh >& /dev/null


And I'm set.

Naturally, this was designed to work for Linux, and would probably work on OS X and Windows/Cygwin as well.
blog comments powered by Disqus