Upstart, update-identica and my blog

Hi friends,

‘Curl’ is one of the fantastic tool I’m using day to day. and Upstart is one good upgrade to the long standing ‘rc.*’ method to start and stop services. While learning TwitterAPI to interact with ‘identi.ca’, I got an idea to update my laptop’s CPU usage to the ‘identi.ca’ feed whenever my system starts and attach that feed into my blog. Well, It developed into something usable now. here is the script

#!/bin/bash
# update-identica - script to update my identi.ca feed

USERID=""
PASSWORD=""
BASEURL="http://identi.ca/api"
UPDATEAPIURL="/statuses/update.xml"
UPDATEURL="${BASEURL}${UPDATEAPIURL}"
MAXMESSAGES="10"
LOGFILE="/var/log/update-identica.log"
LOGFILESIZE=$(du -sb "${LOGFILE}" | awk '{print $1;}')
MAXLOGFILESIZE=$((1024 * 1024))
test "${LOGFILESIZE}" -gt "${MAXLOGFILESIZE}" && rm "${LOGFILE}"
INTERVAL=$((5 * 60))

destroymessages()
{
	EXTRAMESSAGES=$((MESSAGECOUNT - MAXMESSAGES))
	EXTRAMESSAGEIDS=$(curl -u "${USERID}:${PASSWORD}" "${BASEURL}/statuses/user_timeline.xml" 2>/dev/null |
	grep '[0-9]\{7\}' | cut -d'>' -f2 | cut -d'/dev/null |
		tee -a "${LOGFILE}"
	done
}

while true
do
	MESSAGE="status="
	MESSAGE="${MESSAGE}[cpu:$(vmstat 1 2 | tail -1 | awk '{print $13+$14;}')%]"
	MESSAGE="${MESSAGE} [uptime:$(uptime | cut -d',' -f1 | tr -d ' ')]"

	curl -u "${USERID}:${PASSWORD}" -d "${MESSAGE}" "${UPDATEURL}" 2>/dev/null | tee -a "${LOGFILE}"
	MESSAGECOUNT=$(grep '' -f2 | cut -d'<' -f1)
	test "${MESSAGECOUNT}" -gt "${MAXMESSAGES}" && destroymessages
	sleep "${INTERVAL}"
done

Also call this script automatically by creating a event file /etc/events.d/update-identica

# update-identica
# a small program to update this laptop's feed in
# http://identi.ca

start on update-identica-event
start on runlevel 2
stop on runlevel [!2]
exec /usr/bin/update-identica

Download: update-identica

Take a look at the feed titled ‘My laptop’s health’ in this blog, it is the feed which my laptop is updating every 5 minutes.

If you are interested in WebAPIs and accessing through ‘curl’, then here is link, ‘lucanica(identi.ca’s software)’ also using the same REST methods to give web services.

http://apiwiki.twitter.com/Twitter-API-Documentation

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s