Wednesday, December 16, 2009

nagios-config-build Released

I wrote some shell scripts to generate Nagios configuration files, and I finally decided to publish them on Freshmeat. The initial version is crude, and has some hard-coded information, but it is still better than trying to edit the .cfg files by hand.

Here is a brief description

nagios-config-build is a group of shell scripts that generate Nagios configuration files from a list of hostnames. It automatically resolves IP addresses from DNS, and provides a quick way to manage a large number of hosts without having to set up a complicated system.

Nagios is more than just a server monitoring tool. From the Nagios website: "Nagios is a powerful monitoring system that enables organizations to identify and resolve IT infrastructure problems before they affect critical business processes."


Systemnotes.org download:
http://www.systemnotes.org/download/shell/nagios-config-build.html

Freshmeat project: http://freshmeat.net/projects/nagios-config-build


Please feel free to use this blog post for comments, or questions.

Monday, December 7, 2009

How to Record and Play in Vim

Have you ever been in the middle of editing something in vim, and noticed "recording" on the lower left of the screen? If you were in a hurry, you probably just continued typing, and thought, maybe I'll use that feature some day, but as long as it lets me continue I won't worry about it. Well it's really quite simple to use once you know the sequence.

Here is a high level overview on how to use the macro recording feature of vim.

High Level Steps to Record and Play a Macro in Vim

1. Press q to Start recording, followed by a lower case character to name the macro.
2. Perform any typical editing, actions inside Vim editor, which will be recorded.
3. Stop recording by pressing q.
4. Play the recorded macro by pressing @ followed by the macro name.
5. To repeat a macro multiple times, press : n @ macro name, where n is a number.

For more details, check out a complete tutorial at thegeekstuff.com: Vim Macro Tutorial: How To Record and Play

Wednesday, December 2, 2009

Bash Shell, X, & Firefox Shortcuts

As I was writing a script, I noticed that I pressed Shift-PageUp without even thinking about it. Then I realized that there are a lot of shortcuts we take for granted as Sysadmins. I thought it would be helpful to share some of them.

This is not a comprehensive list, but a few shortcuts I find myself using all the time.

Bash Shell shortcuts

  • Shift-PageUp / PageDown See more of the screen

  • Ctrl-a, Ctrl-e Move to beginning / end of line

  • up & down arrows See bash history

  • !! / !$ Execute the previous command / parameter

  • !n Execute the nth command in history

  • Ctrl-D Logout, or exit

  • Ctrl-u, Ctrl-h, Ctrl-b Delete previous char, or entire line

  • Alt-F1 to Alt-F7 Switch to another console

  • —see also: using-bash-history, and all bash posts


X shortcuts

  • Ctrl-Alt-Backspace Force X to reset

  • Alt-tab Switch to a different application

  • gnome-terminal:

    • Ctrl-Shift-t Open a new tab

    • Ctrl-PageUp / PageDown Switch between terms

    • (Ctrl)-Alt-F1 to F7 Switch to another console (Ctrl while in X)



Firefox shortcuts

  • Ctrl-Click / Shift-ClickOpen link in new tab / window

  • Ctrl-PageDown Goto next tab

  • Ctrl-t New tab

  • Alt-Home Goto home page

  • Esc Stop flash animations from playing

  • Ctrl-Shift-t Re-open a Recently Closed tab


There is a nice shortcut list at linuxhelp.blogspot.com, organized by key bindings http://linuxhelp.blogspot.com/2005/08/bash-shell-shortcuts.html

Bash Alias

An alias is a built-in way of modifying the way a command works, or it is used as a shortcut for another command. For example, you may find that you often type "ls -l", or "ls -ltr", and think it would be nice if you could type less characters. You can create an alias, so that all you would have to type is "ll", instead of "ls -l."

To add an alias to your .bashrc file:

$ vi ~/.bashrc

Insert these lines:

alias ls='ls --color=tty'

alias ll='ls -l'

In order for the new alias to take effect, you can open a new console, login again, or simply source your .bashrc file. You also have the option of running bash again to open a new shell, or just running the alias command. What do I mean by source the file? You can either run a script, or have the shell read the variables in a script without actually running it. This is called sourcing a file, and is accomplished by typing either "source", or "." followed by the file to source, e.g.

$ source ~/.bashrc

or

$ . ~/.bashrc

Sometimes the word source is easier to read than a dot, but either method will work fine.

Note that you don't need to be root to access your home directory. "~/" is a shortcut for wherever your home directory happens to be (e.g. /mountpoint/home/me, or /home/users/someone). Also, the dot "." is used for hidden files, so if you do

$ ls ~/

it won't show up, but if you do

$ ls -a ~/

it will.

There are some common aliases you may have by default. To view your current aliases, type alias by itself, or "alias -p":

$ alias -p
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'

Other Uses

"What else can this be used for?", you ask. Anything you use often enough -- usually something smaller than a script, but too long to type frequently. How about changing to a common directory? Of course, to go home, type:

$ cd

To go to the previous directory, type:

$ cd -

Maybe you would like something like "sales" to take you to /home/dept/sales.

alias sales='cd /home/dept/sales'


Unalias


What happens if you make a mistake, or you use your account on a host that has a shell that does not support your alias? For example, you log into a sun box, and the ls alias is not valid. The quick fix is to simply run "unalias ls."

So, go have some fun with aliases. Here are a few ideas to try:

alias h='hostname'
alias myprogram='/usr/local/bin/myprogram'
alias taillog='tail -f /var/log/messages'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'