Dec 21

timegrep: Very useful grep tool

Reading time: < 1 minute Specially when you have to look up inside Postfix logs or Syslog in general it could be the swiss knife tool you need: timegrep.

You have to know that the tool is developed using Python. And is very easy to upgrade or fork the code.

Feb 12

eines per XMPP

This entry is part 4 of 4 in the series xmpp

Reading time: 2 – 3 minutes

A continuació adjunto una petita descripció d’algunes eines per comunicar-se amb una xarxa XMPP que poden ser molt útils:

Idavoll

Implementació del XEP-0060, o sigui, d’un servei de publish-subscribe (PubSub) esta escrit amb Python i Twisted. Bàsicament el que permet és que sobre un servidor XMPP estàndard hi podem connectar un servei basat en PubSub, o sigui, que nosaltres publiquem una serie d’informació que un seguit de clients consulten perquè hi estan subscrits. És un mètode basat en events (no-polling) molt adient per disfondre certs tipus d’informació.

Switchboard

A vegades programem shell scripts que necessiten enviar el seu resultat a la xarxa XMPP, per exemple, imagineu que volem comunicar la caiguda d’un servei a través de GTalk, doncs aquest toolkit ens simplifica moltíssim aquesta tasca. Esta programat en ruby i a part de poder-se usar des de la CLI també podem integrar-ho com a llibreria dins d’un codi en ruby.

XMPP Poetry CLI tools

El seu nom ja ho diu tot, són una col·lecció d’eines que via CLI ens permeten interactuar amb una xarxa XMPP, algunes de les seves funcions són:

  • disco: recull informació sobre serveis
  • pubsub-config: crea, configura i llança queries contra serveis pub-sub

Aquestes eines estan escrites amb Python, Twisted i Wokkel.

XMPPPHP

Llibreria de PHP5 amb suport de:

  • XMPP 1.0 (pot connectar a: GTalk, LJTalk, jabber.org, etc)
  • Suporta TLS
  • Processa diversos formats XML

Sembla força senzill d’usar, per exemple, programar un bot és tan fàcil com això:

<?php
include("xmpp.php");
$conn = new XMPP('talk.google.com', 5222, 'user', 'password', 'xmpphp', 'gmail.com', $printlog=True, $loglevel=LOGGING_INFO);
$conn->connect();
while(!$conn->disconnected) {
    $payloads = $conn->processUntil(array('message', 'presence', 'end_stream', 'session_start'));
    foreach($payloads as $event) {
        $pl = $event[1];
        switch($event[0]) {
            case 'message':
                print "---------------------------------------------------------------------------------\n";
                print "Message from: {$pl['from']}\n";
                if($pl['subject']) print "Subject: {$pl['subject']}\n";
                print $pl['body'] . "\n";
                print "---------------------------------------------------------------------------------\n";
                $conn->message($pl['from'], $body="Thanks for sending me \"{$pl['body']}\".", $type=$pl['type']);
                if($pl['body'] == 'quit') $conn->disconnect();
                if($pl['body'] == 'break') $conn->send("");
            break;
            case 'presence':
                print "Presence: {$pl['from']} [{$pl['show']}] {$pl['status']}\n";
            break;
            case 'session_start':
                $conn->presence($status="Cheese!");
            break;
        }
    }
}
?>
Oct 07

Nagios external commands

Reading time: 1 – 2 minutes

Tan de temps usant nagios i mai havia tingut la necessita de recorrer als Nagios External Commands. Escencialment es tracta d’una named-pipe que usa Nagios per rebre comandes via shell.

  • Sintaxis per injectar les comandes. Per suportar aquesta funcionalitat previament cal haver-la habilitat al fitxer de configuració de nagios, això també ho trobareu a l’anterior enllaç.
  • Comandes suportades, la llista és força gran i hi podem trobar coses com ara forçar un check per host o fins hi tot deshabilitar els checks sobre un servei o un host.

A continuació adjunto la comanda que podeu llençar desdel prompt per llençar una ordre al nagios al cap de deu segons. En aquest cas forcem que es verifiquin tots els serveis d’un host.

# des del directori on hi ha la 'named-pipe' sovint anomenada 'nagios.cmd'
now=$(date +%s); next=$(expr $now + 10); echo "[$now] SCHEDULE_FORCED_HOST_SVC_CHECKS;nom_host;$next" > nagios.cmd

Per veure el resultat de la comanda i si aquesta ha estat rebuda pel nagios només cal que mirem el fitxer nagios.log. La sortida del log serà algo així:

data host_server nagios: EXTERNAL COMMAND: SCHEDULE_FORCED_HOST_SVC_CHECKS;nom_host;unix_ts
Oct 08

PowerTOP – aprofitem millor la bateria del portàtil

Reading time: 3 – 4 minutes

Ha hagut de passar gairebé un any perquè comenci a treure-li partit al portàtil. No pas pel complicat que és sinó perquè no hi he dedicat temps per un motiu o per altre, doncs bé, en el meu afany d’anar mica en mica aprofitant tot el que m’ofereix el Dell XPS m1330 m’he posat a ajustar-lo una miqueta perquè la bateria em redeixi més. Sovint treballo endollat a casa o a la feina i per tant, no tinc la necessitat de tirar de cap de les dues bateries que tinc. Però últimament he agafat la costum de llegir feeds des del llit a primera hora i a escriure algún que altre post des del mateix lloc. Així doncs, en aquests casos i per tal d’agilitzar el tema tiro de bateria.

screenshot of powertop tool

Una eina que he m’ha sorprès moltíssim a l’hora d’estudiar quines parts del portàtil consumien més i com fer que això no passi ha estat el PowerTOP, aquesta eina té una funcionalitat que realment m’ha encantat. A part de totes les informacions tècniques que ens dona per analitzar el consum a la part inferior de la pantalla ens mostra suggeriments de com podem millor el rendiment del nostre equip: canviar certes opcions del kernel, modificar registres de /proc, para algún dimoni que no és vital, desactivar dispositius com el bluetooth, wifi o ethernet si no els estem usant… etc. Però el millor és que en alguns casos no només ens informa del que hem de fer o podem fer, sinó que a més ens facilita el procés a través de tecles d’accés ràpid. Per exemple, et recomana que apaguis el bluetooth i si prems ‘B’ ho fa ell per tu.

Pel que fa a la resta d’informació presentada a la pantalla de l’eina podem trobar tres grans zones diferenciades de la pantalla, a la part superior hi ha els estats ‘C’, bàsicmaent C0 és l’estat en que la CPU esta executant alguna comanda i els altres estats són diferents nivells d’IDLE. Obviament quan més temps passem a l’estat C3 menys estem usant la CPU i menys consumim.

Sota tenim la quantitat de ‘wakeups’ que rep la CPU per segon, o sigui, la quantitat de vegades que algún procés força a la CPU executar alguna comanda. Obviament quan més baix sigui aquest número menys CPU consumirem, això esta en relació directe amb els estats ‘C’ comentats abans, és clar.

Per últim a la part inferior de la pantalla tenim un llistat dels 10 processos que més ‘wakeups’ generen, aquí podem veure quines parts del portàtil estan consumint més. En el meu cas el ‘firefox’, la targeta gràfica ‘nvidia’, les ‘X’ i la ‘wifi’. És important notar que quan parlem de processos no tenen perquè ser processos de sistema, sinó que poden ser interrupcions, parts del kernel, etc.

Una altre d’aquestes senzilles, potents i molt útils.

NOTA de l’Elri (2008/12/15): em comenta via correu que una bona opció per no despertar tan la CPU en un Dell XPS m1330 com el que tinc jo és afegir a la secció ‘Screen’ això:

Option         "OnDemandVBlankInterrupts" "True"
Oct 02

ssldump depuració de tràfic xifrat

Reading time: 2 – 2 minutes

Tothom coneix el TCPdump i fins hi tot hi ha gent com jo que l’usem a diari, de fet, no fa massa temps  vaig re-descobrir el TCPflow (ja l’havia descobert abans, però vaig cometre el gran error d’oblidar-lo). Doncs bé, el problema d’aquestes eines és que són molt útils per tràfic sense xifrar però quan es tracta de tràfic xifrat amb SSL/TLS com ara HTTPs o d’altres protocols que viatgen xifrats i volem saber perquè no funcionen hem de recorrer a eines com el ssldump.

SSLdump permet seguir el fluxe de les conexions TCP xifrades amb SSLv3/TLS. Obviament per aconseguir desxifrar el contingut de l’enllaç hem de facilitar-li els certificats corresponents a l’eina. Però no només ens permet depurar a nivell de dades que corren per TCP sinó que també ens dona informació del propi protocol de xifrat descrita de forma humana. O sigui, que podem saber si el problema de l’enllaç és produeix durant el procés de handshake, ChangeCipherSpec o dins del protocol.

El que jo feia fins ara per poder analitzar el contingut d’un protocol que viatge xifrat és ajudar-me de l’eina sslproxy. La qual feia de bouncer al servidor de protocol o al client, així doncs obtenia un tram de la conexió que no anava xifrat i a través del tcpflow o el tcpdump podia obtenir el tràfic en clar. La tècnica és enginyosa i útil però ferragosa en comparació al ssldump.

Jun 13

tcpflow: mirant streams tcp en un moment

Reading time: 1 – 2 minutes

Fins ara per poder seguir un protocol dins del enllaç TCP, o sigui els missatges de la capa 5, sempre acabava capturant-lo amb el wireshark o en el seu defecte amb el tcpdump generava un fitxer .cap que després obria al wireshark i a través d’una funció tan simple com el Follow TCP stream em montava la sessió de capa d’aplciació que podia seguir de forma ben còmode. El gran descobriment que vaig fer l’altre dia és el tcpflow una eina la mar de simple i lleugera que com no podia ser d’altre forma usa les llibreries libpcap, le mateixes que el tcpdump i el wireshark per mostrar-nos de forma completament visual i simple a través de la consola o contra un fitxer el contingut de la sessió TCP. Espero que li tregueu tan profit com jo a l’eina.

Dec 30

Driver Collector – extreient els drivers del windows

Reading time: < 1 minute

L’any 2002 ja vaig parlar del WinDriver Expert escencialment el programa és algo molt semblant al Driver Collector. Malgrat tenen alguns matisos diferents ambdós val la pena tenir-los ben localitzats ja que moltes vegades ens trobem amb màquines de les quals ningú té els drivers d’algún dels seus dispositius. Doncs bé, aquest programet podrem extreure els fitxers del driver per quan haguem de re-instal·lar la màquina.

drivercollector.jpg
Jun 14

Gentoo trick: eix buscant pel portage molt ràpid

Reading time: 1 – 2 minutes

A la Gentoo Linux Newsletter d’aquesta setmana es parla d’una eina que ens permet buscar pel portage de forma molt ràpida. De fet, ja vaig parlar d’una eina que serveix per coses semblants, fa temps, l’article es deia “Gentoo Trick: esearch & esync molt útils“.

De fet, no tinc clar quina diferència hi ha entre l’eix i l’esearch però sembla que tingui pinta de ser una mica més ràpida al fer el sync del portage. A més és curiós que usant també el trac com a gestor del projecte, l’altre dia en parlava en l’article sobre symfony.

Apr 09

Your Uninstaller 2006 – netegem la porqueria del WXP

Reading time: 1 – 2 minutes

Com sempre el windows després de molt de temps instal·lat comença a degradar i a donar problemes i problemes. Així doncs, si tenim en compte que el meu portàtil malgrat anar el 99% del temps en linux tenia el Win fet un desastre, trigava segles a arrencar i tenia mil i una històries instal·lades que no hi havia qui es desintal·lés. Així que vaig decidir provar el Your Uninstaller 2006 i he de dir que m’ha sorprés el resultat i la simplicitat del software.

uninstallermain.jpg

Realment ho fa vastant bé, això de buscar pel registre i el disc dur les restes de coses que troba a mig instal·lar, fitxers temporals que queden arraconats (m’ha borrat quasi 500Mb de fitxers temportals) a més és trivial saber què s’esta carregant al arrencar el win i li pots dir què no vols que es carregui m’ha baixat més d’1min el temps d’arrrencada ara en uns 45s tinc el win carregat.

Nov 11

Gentoo Trick: module-rebuild

Reading time: 2 – 2 minutes

El pof en el seu dia i la GWN (Gentoo Weekly News) en una de les seves últimes edicions ens han parlat algún cop d’aquesta eina tan útil i que mai recordo com es diu exactament. A més sempre és quan més la necessites, o sigui, quan fas un update de kernel. Serveix per algo tan útil com recompilar els mòduls que no són natius del kernel per la nova versió de kernel que ens acabem d’instal·lar, estalviant-nos el mal moment que hem passat tots de necessitar just el mòdul que controla el dispositiu que no estava suportat de forma genèrica pel kernel i just en aquell moment no tenim el mòdul compilat.

Suppose you’ve just booted into a freshly updated kernel. First of all,
check which packages are using modules that haven’t been built with the
new sources yet:

module-rebuild list

and then you can rebuild them all by simply going:

module-rebuild rebuild

Per disposar del module-rebuild feu un emerge a:

*  sys-kernel/module-rebuild
      Latest version available: 0.5
      Latest version installed: 0.5
      Size of downloaded files: 0 kB
      Homepage:    http://www.gentoo.org/
      Description: A utility to rebuild any kernel modules which you have installed.
      License:     GPL-2

UPDATE 5/6/2006: fixeu-vos al fer el list que no sempre hi ha tots els paquetes que instal·len moduls a la vostre llista, per tant, us recomano que afegiu els paquets que tenen mòduls amb l’opció add de la companda module-rebuild a partir de llavors ja es recordarà ell d’aquesta dependencia en el rebuild.