segunda-feira, 24 de janeiro de 2011

Integrating Nagios with Firefox and SSH sessions

Even advanced command line users are sometimes fed up with writing long hostnames to startup ssh sessions. The situation gets worst as more hosts have to be accessed on a daily basis.

Unlike other monitoring systems Nagios presents a web-based interface which, by default, does not provide a way for directly acessing the monitored hosts.

Would it be nice to access Nagios from Firefox and have it launch SSH (or other connections) with a single click? Definitely. Let's see how it's done.

1. Register the ssh:// protocol on Firefox

In the past external handlers were registered via user preferences. From version 3 onward, Firefox honors whatever is registered with gconf. Run the following commands as regular user:
gconftool-2 -s /desktop/gnome/url-handlers/ssh/command '/usr/local/AS/bin/dossh.sh %s' --type String
gconftool-2 -s /desktop/gnome/url-handlers/ssh/enabled --type Boolean true
gconftool-2 -s /desktop/gnome/url-handlers/ssh/needs_terminal --type Boolean false
Update: this will not work on GNOME 3 and Unity based systems, like Ubuntu 12.04. For such systems add a new firefox preference in about:config
network.protocol-handler.expose.ssh=false
This will allow you to manually choose a handler application the first time an ssh:// URL is clicked.

2) Write a helper script to launch SSH sessions


The first command includes the path to a helper script that launches the SSH session. In our case the dossh.sh script is as follows:
#!/bin/bash

ARGS=`echo $@ | sed -e "s/%20/ /g"`
REMOTEHOST=`echo $ARGS | awk '{ print $1 }' |sed -e "s/ssh:\/\///"`
REMOTEPORT=`echo $ARGS | awk '{ print $2 }'`

if [ "x$REMOTEPORT" = "x" ]; then
  REMOTEPORT=22
fi

TERMINAL=xterm
ARGS="-fn 9x18 -fg white -bg black -T  $REMOTEHOST"

export REMOTEHOST
export REMOTEPORT

$TERMINAL $ARGS -e 'echo -n "Username: " ;read REMOTEUSER; ssh $REMOTEHOST -p $REMOTEPORT -l $REMOTEUSER'
You can adapt the script to use a different terminal (adapting its arguments as well), to assume a predefined user so that the username doesn't have to be typed everytime, to accept arguments for other SSH features (ex: portforwarding) and so on. If you have SSH public key distribution in place, you may even login without being prompted for a password.

3) Let Nagios add a special ssh:// URL next to the regular host URL


For this to happen your hosts must include the hostexinfo section in their definition. Please refer to the following example to understand how the action_url parameter creates the special URL:

define host {
use generic-host
host_name vmserver01.intranet
alias vmserver01
address vmserver01.intranet
check_command zoneedit-check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
}

define hostextinfo{
use server
host_name vmserver01.intranet
notes CentOS 5.4
action_url ssh://$HOSTNAME$ PORT
}

Note that $HOSTNAME$ is actually to be written with the dollar signs around whereas PORT should be replaced by the port sshd runs on on the particular machine. If the port number is not present the script will assume port 22.

Once this is done, and Nagios is restarted a new icon will appear next to each host. This icon represents a link of the form ssh:// which is handled by the script defined in step 2).

The "explosion" icon is a ssh://hostname link that is handled by Firefox

4) Prevent Firefox from opening a new TAB each time you try to launch an SSH session


By default Nagios creates the new ssh:// links with a target=_blank parameter. This causes a new tab to open on each click. To fix it, you should be able to add or change the following line in the cgi.cfg configuration file:

action_url_target=_self

This option, even if correct according to Nagios documentation, seems to be ignored in our setup. An alternative solution, that works really well, is installing this Greasemonkey script, that gets rid of all the intruse HTML _blank targets.


5) Conclusion:

Nagios can be integrated with Firefox to automate the startup of SSH sessions. The user experience is certainly much better this way. The idea presented here can be adapted and extended. For example, the dossh.sh script can be tweaked so that certain local ports are automatically forwarded by ssh so that we can connect to hosts behind Linux gateways using rdesktop, Firefox, XWindows, FreeNX, VMWare and so on.

sábado, 8 de janeiro de 2011

A viagem do Elefante

Os internautas Portugueses descarregam filmes da Internet. A associação de clubes de video descarrega caixotes de papel na Procuradoria. Não se sabe se alguma destas descargas é crime mas o que se vê, entre esgares de gozo e incredulidade, é toda esta gente contar espingardas. Ocupa-se este texto de relatar não o que aconteceu, porque isso na verdade não sabemos, mas o que, segundo a razão e a lei dos grandes números, podia bem ter acontecido.

Estava-se no dia do comunicado. Talvez a dita associação saiba o que diz. Mais vale comprar ou alugar o filme online, pensou, do que ir catar torrents e legendas e apanhar uma seca valente até conseguir ter algo que se veja. E assim sempre ganham qualquer coisa. Foi animado deste sentimento despesista que se dirigiu o intrépido internauta ao site da associação. Com o MBNET em punho e os EUR a querem saltar da conta como pipocas no microondas, o sangue fervia-lhe nas veias com a expectativa de obter de forma cómoda o mais recente blockbuster. Vai-se a ver e a ideia não era essa. Era outra diferente. A ideia, se é que a esta pré-histórica lembrança se pode sequer chamar ideia, era despir o pijama, descer as escadas, dar corda ao motor para rumar a um tal de clube, escolher um filme, a seguir levá-lo para casa e voltar mais tarde para entregá-lo. Do site constavam 4 ou 5 dos tais clubes de diferentes zonas do país. Incrédulo, esfregou os olhos. Foi ver melhor. O site já estava em baixo.

A meio da estridente gargalhada lembrou-se dos problemas com o DRM dos ebooks e das BDs do Achille Tallon que já não se conseguem comprar em Português, salvo em edição pirata digitalizada e impressa por conta própria. Lembrou-se dos sites das televisões nacionais em que encontrar seja o que fôr é fácil para o Sherlock Holmes e do tvtuga.com em que – legal ou não – tudo aparece organizado e a funcional. Lembrou-se do Ensitelgate e da guerra da Sony com os utilizadores da Playstation 3. Acercou-se de si a ideia de que as comunidades se organizam para pôr a funcionar as coisas que lhes dão jeito. A esta, juntou-se a impressão de que algumas corporações não querem vender as coisas de que as pessoas gostam. Querem, ao que parece, vender o que lhes convinha que as pessoas gostassem. Veja-se, por exemplo, como era bom se as pessoas gostassem de comprar MP3 com protecção de cópia ou achassem que gravar filmes numa box cujo disco rígido pode avariar a qualquer momento, sem que do conteúdo se possa fazer um backup, é uma ideia genial.

Sorriu imaginando-se a levar o país ao mecânico apenas para ouvir a resposta: "olhe que não tem arranjo, agora só um país novo". "Guardou" o MBNET e puxou do Vuze.

Isto de sugerir aos outros façam o contrário do que querem nem sempre é uma ciência exacta. Torna-se difícil quando os outros são muitos ou quando são teimosos. É quase sempre mais fácil cobrar do que contrariar. Está claro que para cobrar é preciso prestar serviço e se o serviço de aluguer ou compra de filmes online existisse em Portugal haveria moral para condenar quem o não usasse. Mas se o serviço de aluguer de filmes obriga a uma mensalidade fixa (MEO, etc) ou a despir o pijama e ligar o carro, creio ser seguro afirmar que os internautas já têm um melhor. É um que não demorou 10 anos a aparecer.

No fundo, o problema dos internautas gostarem da Internet, e portanto de fazer downloads, é semelhante ao dos gourmets gostarem de comida, ou dos fanáticos da ferrovia gostarem de andar de comboio, com a diferença que aos demais nenhuma associação ainda tentou tapar a boca ou bloquear um túnel a meio da viagem. Interrogo-me se um dia alguém quererá proibir os comboios e obrigar-nos, por decreto, a ir ao Porto de elefante. Seria um inaceitável retrocesso pela lentidão e desconforto mas também uma fraca ideia de negócio já que hoje em dia se vendem muitos bilhetes de comboio.

E quem nunca esteve de trombas que atire a primeira pedra.

“Enrolando com a tromba uma porção de forragem que bastaria para satisfazer o primeiro apetite de um esquadrão de vacas, salomão, apesar da sua vista curta lançou-lhes um olhar severo, dando claramente a entender que não era um animal de concurso, mas sim um trabalhador honrado a quem certos infortúnios, que seria demasiado longo relatar aqui, haviam deixado sem trabalho […].”

José Saramago, A viagem do Elefante