News

Ruby development for system administrators

Koen Vervloesem doesn’t like shell scripts that are difficult to maintain, therefore he uses Ruby for his sysadmin tasks. Do the same with his four-page guide…

ruby-zip

This article originally appeared in issue 89 of Linux User & Developer magazine. Subscribe and save more than 30% and receive our exclusive money back guarantee – click here to find out more.

Get your first digital copy of the magazine for iPhone and iPad free – just search for ‘Linux User’ on the Apple App Store now! [twitter username=”linuxusermag”]

Resources:
Ruby programming language
Ruby gems
REXML

Most Linux and UNIX system administrators use a diverse mix of shell scripts and tools like grep, awk, cut and so on. The classical approach has proven its merits, but these scripts are generally not easy to read or to maintain. One solution is to use a real programming language for system administration tasks. In a complex environment, system administration can become much easier with a real programming language instead of shell scripts. Traditionally, Perl has been very popular among sysadmins, but some people maintain that this is not much better than shell.

In this article, we choose Ruby, a feature-rich but simple object-oriented programming language known from the popular web application framework Ruby on Rails. The Ruby programming language has many built-in and external libraries that can come in handy for typical system administration tasks such as file manipulation and text processing, log file analysis, logging into other servers, and so on. The gentle learning curve of this programming language, coupled to the easy-to-read and maintainable form of the scripts, makes this a valid choice for sysadmins.

Simple but effective
Let’s start with some basic features of the language, to show you why Ruby is in many cases a better choice than Perl or a shell script. First of all, everything in Ruby is an object, even primitive types such as numbers and strings. For instance, an array of numbers is just an object, which has methods and properties. This has a very simple syntax. For example, this is how you get the length of an array:
[sourcecode language=”ruby”][1, 2, 3, 4, 5].length[/sourcecode]
And this is how you get the last element of an array:
[sourcecode language=”ruby”][1, 2, 3, 4, 5].last[/sourcecode]
A second powerful feature are code blocks, which allow for shorter and easier-to-grasp code. A code block is a function without a name, that can be passed to another function as a parameter. For example, if you have an array of numbers, you could double each one in one line:
[sourcecode language=”ruby”]numbers = [1, 2, 3, 4, 5]
doubles = numbers.collect { |n| 2*n }[/sourcecode]

×