lunes, 29 de julio de 2013

Mandar notificaciones al escritorio Linux

Muchas veces necesitamos mandar notificaciones al escritorio para enterarnos de lo que pasa,en los sistemas Linux listos para usar siempre vemos avisos de que se esta agotando la bateria,nos desconectamos de la red,etc pero no sabemos como enviar las nuestras(eso creo porque es la razón de esta entrada),asi que aqui aprenderemos a enviar notificaciones:



Bien pero esto de que nos sirve?

Creo que al buscar este tutorial tendrán sus ideas, pero aquí aguas razones por las cuales es bueno aprender a usar notificaciones:

Esto mas que nada es para seguridad informática,ya que las notificaciones mas importantes las tiene definidas el mismo sistema,en la seguridad informática el tiempo de edición es critico,a que me refiero con el tiempo de edición?

A tocar los archivos,en Linux/Unix se le conoce como touch y hay un comando para ello,al tocar un archivo nos esta indicando que lo modificamos,editamos incluso borramos(si no esta),al hacer esto es probable que no se trate de nosotros mismos si no de un intruso,esto lo hace interesante a la hora de escalar privilegios,porque por ejemplo pueden acceder a nuestra cuenta normal pero si quieren acceder a root,deben modificar algún archivo(en un tipo de ataque) y si lo estamos monitoreando no habra problema y podremos detectar al intruso,no solo al ver los archivos modificados si no directamente ver los usuarios,con el comando (who por ejemplo),así que bueno vamos a ver como acceder a las notificaciones.


Tutorial

El comando es simple,solo hay que escribir en la terminal:

notify-send "Mensaje"
Tiene argumentos en la linea de ordenes,el que se me hace interesante es:

-i

Que es para icono:

Por ejemplo:

notify-send "Mensaje" -i firefox

Vamos a ver un ejemplo de ver las tty's conectadas al sistema,osea las interfaces que estemos usando:

Veamos que las interfaces que uso son tres dos shells y un tty en modo grafico:



Ahora me voy a conectar por ssh en local a mi mismo host:



Y las conexiones aumentan en dos(una shell mas y la ssh).

Ahora imaginemos que esa conexion no la efectuamos nosotros,vamos a usar el who para ver las interfaces(pero hay mas maneras):


 #!/bin/bash  
   
 num=`who | tee users.log | wc -l`  
   
 echo $num > num.log # Esto podria ser un base de datos,etc  
   
 while [ 1 ]; do  
   num=`cat num.log`  
   n=`who | wc -l`  
   who > u.log  
   usuario=`diff u.log users.log | sed -n -e 2p`  
   if [ $num -eq $n ] # igual: no pasa nada  
   then  
     continue  
   elif [ $num -gt $n ] # mayor: alguien se desconecto  
   then  
     echo $n > num.log  
     `who > u.log && who > users.log`  
     notify-send echo "Desconectado $usuario"  
   else # Menor: alguien se conecto  
     echo $n > num.log   
     # ^ En cualquier caso recargamos el log o no dejara de mostrar el mensaje   
     `who > u.log && who > users.log`  
     notify-send "Conectado $usuario"  
   fi  
   sleep 5; # tiempo de intervalos  
 done  
   
 #This library is free software; you can redistribute it and/or modify it under  
 #the terms of the GNU Library General Public License as published by the Free  
 #Software Foundation; either version 2.1 of the License, or (at your option) any  
 #later version.  






Eso es todo :D

Mas info:

notify-send --help




2 comentarios:

  1. Genial tip, pero se me ocurre una pregunta, apagado el sistema, esta notificación se borra o queda pegada como un post-it

    ResponderBorrar
  2. Si te refieres al script de escaneo de interfaces,así como esta crea el archivo donde guarda los datos automáticamente cada vez que se ejecuta,osea que se borra.

    Pero se podría guardar un seguimiento en una DB,para guardar todas las conexiones.

    También recomiendo iniciar este tipo de archivos al iniciar el usuario y no al usar el sistema.

    Saludos.

    ResponderBorrar

Los comentarios serán revisados antes de ser publicados.