Command-Line Cloud: gcalcli

If you follow my columns in Linux Journal, you
probably are aware
that I'm a big fan of the command line. When it comes to getting things
done efficiently, most of the time the command line can't be beat. This
has led me to integrating services like instant messaging and Twitter
into BitlBee so I can use them with my command-line IRC client Irssi
(both written up in previous LJ issues).

You probably
also are aware
that unlike some other Linux Journal writers out there (I'm looking
at you Bill Childers), I'm a bit more skeptical of cloud services. That said,
in this day and age, it seems you can't escape cloud services, so what's
a guy like me to do? Well, I've just figured out how to use cloud
services from the comfort of my green-on-black terminal. So, I figured it
might be interesting to write a few articles describing how you can access
various cloud services from the command line.

The first cloud service I thought I'd cover also is one of the most
prevalent: Google Calendar. Although a lot of calendaring options
exist, in a corporate environment, you often are talking about
either Exchange (usually larger, older-school companies) or Google Apps
(usually smaller startups). Google Calendar can be pretty convenient as
a shared calendar, particularly if you are issued an Android device at
work. Plus, like with all major cloud services, you can collaborate and
share your data with other people (like the NSA). My main problem with
Google Calendar always has been having to open up a browser every time
I want to view my calendar. Although I'm sure some people are logged in to
the Gmail Web interface all day and get meeting notifications that way,
I'm not. Because I'm usually glued to my terminal window, I often don't
see those reminders. After missing a few meetings, I decided I needed to
find some way to put meeting notifications inside my terminal.

The
CLI to Google Calendar that worked for me was gcalcli. It provides
a command-line interface to view your calendar in various formats
and also lets you add events—all from the command line.

Install gcalcli

gcalcli itself was not packaged for my distribution, so installation took
me a few extra steps. First, I cloned the project's git repository into a
local directory named src that I use to keep track of source code (feel free
to replace this with the directory you use for the same purpose). Then,
I created a symlink to the included script so I could start identifying
what Python libraries I'd need:

At this point, I tried to launch the application but noticed I was missing
a few required Python libraries, such as gflags, dateutil, httplib2
and google-api-python-client. The first three had Debian packages, so I
was able to install them with:

The final Python library wasn't packaged in Debian. For better or
worse, it seems just about every modern scripting language has its
own implementation of Perl's CPAN, so I fell back to using Python's pip
(which I first had to install):

Initial Setup

With all of the libraries in place, you are ready to set up gcalcli to
use your Google account. The first time gcalcli is run, it will set up
your account, but if you are not running it from your local machine,
you will want to add an extra argument the first time you launch it so
it can provide you with a URL to load locally to authorize gcalcli:

$ gcalcli agenda --noauth_local_webserver

Once it's set up, you can see your current calendar agenda with the
agenda command (the events have been changed to protect the innocent):

I've found the agenda output to be the most useful for
seeing what's on my plate
for the day; however, you also can use calw and
calm to output ASCII-art-style weekly and monthly calendars, respectively (Figure 1).

Kyle Rankin is a director of engineering operations in the San Francisco Bay Area, the author of a number of books including DevOps Troubleshooting and The Official Ubuntu Server Book, and is a columnist for Linux Journal.

As Linux continues to play an ever increasing role in corporate data centers and institutions, ensuring the integrity and protection of these systems must be a priority. With 60% of the world's websites and an increasing share of organization's mission-critical workloads running on Linux, failing to stop malware and other advanced threats on Linux can increasingly impact an organization's reputation and bottom line.

Most companies incorporate backup procedures for critical data, which can be restored quickly if a loss occurs. However, fewer companies are prepared for catastrophic system failures, in which they lose all data, the entire operating system, applications, settings, patches and more, reducing their system(s) to “bare metal.” After all, before data can be restored to a system, there must be a system to restore it to.

In this one hour webinar, learn how to enhance your existing backup strategies for better disaster recovery preparedness using Storix System Backup Administrator (SBAdmin), a highly flexible bare-metal recovery solution for UNIX and Linux systems.