2

Nyt navn og koncept

-

Ja så døde mikjaer.dk … det irriterede mig at folk blev ved med at rode rundt i mikjaer.dk og mikjaer.com – jeg syntes det er ret åbentlyst at det er to forskellige websites men det er åbenbart ikke klart for enhver. Derfor introducerer jeg nu bodyhacking.dk og fjerner alt fra bloggen som ikke handler om bodyhacking.

Jammen hvad så med alle de nørdede indlæg?
Jo frygt ej … dem med noget indhold ryger selvfølgelig over på mikjaer.com – de passer også bedre i konteksten der end de gør her, de indlæg som hverken passer ind her eller der er der sku nok ikke nogen der kommer til at savne alligevel ;)

1

Anmeldelse af Frederiksberg Svømmehal

-

Udsigt: Superb
Svømmefaciliteter: Middelmådige
Atmosfære / Stemning: Dårlig
Hygiejne: Klinisk
Crowdines: Katastrofal

Jeg har lært at man altid skal starte med noget godt, så lad mig med det samme fremhæve udsigten. Der var overdrevet mange lækre tøser, men der var generelt også overdrevet mange mennesker … jeg har nu været derinde både som almindelig gæst og som VIP i luksus afdelingen, og jeg skal med det samme sige at den her anmeldelse kun omhandler selve svømmehalen.

Det første der slår en i hovedet når man kommer ind i svømmehallen er et skilt, faktisk er der skilte over _alt_ og samtlige tænkelige og utænkelige regler er skåret ud i pap, inden jeg var nået hen for at købe min billet var jeg blevet truet med bortvisning to gange, damen der sider bag skranken er pakket ind i plastik og sider og snakker til mig igennen en mikrofon der måske var skruet en tand for højt op, samtidig med hendes blide stemme skærer i luften som en motorsav så resulterede det i at jeg allerede var i defensiven før jeg kom ind i omklædningen. Det var iøvrigt _præcis_ samme modtagelse jeg fik sidste gang jeg var derinde, så det er lidt svært at afskrive det som en dårlig dag.

Svømmehallen var overfyldt, jeg tror måske der var 25 mennesker i den bane jeg svømmede i, der var høj bølgegang i bassinet og som regel var der kø for at få lov og vende rundt i enden … skiltningen var direkte latterlig og frastødende, eksempler:

“Vippen er ikke nogen trampolin, max 2 hop”

“Babybassin husk armbånd” (det koster ekstra)

“Husk afvaskning af hele kroppen, uden tøj og med sæbe. Tøj er ikke tilladt i bruseren, heller ikke nede ved fødderne. Brud medfører bortvisning, undskyldninger godtages ikke” (og bruserne var så hegnet ind med kæder med skilte hvorpå der stod “Ingen badetøj” hvilket mest af alt ledte tankerne hen på en kz-lejr snarere end på noget rekreativt)

og lige for at toppe den af var der et skilt ved udgangen til svømmehallen hvorpå det oplyses at blufærdighedkrænkelse _altid_ meldes til politiet.

Der var mange flere … og de fleste fik mig til at føle mig som et barn der havde tisset i bukserne, nej det var ikke urimelige regler, men måden det blev kommunikeret ud på er aldeles uheldig, jeg følte mig kort sagt ikke særlig velkommen.

Jeg stoppede efter 500m og gik op i kurbadet istedet … dét var tilgengæld lækkert, men mere om det senere :-)

Bottom line: Frederiksberg svømmehal skal man ikke komme i for at svømme!

1

Velkommen til 2012

-

Velkommen til nye muligheder, nye mål og nye bekendtskaber. Her vil du ikke høre en masse sentimentalt vås om sidste år, jeg vil meget hellere fokusere på hvad der kommer.

Jeg har fejret iaften med nogle gode venner og noget god mad (okay … næste gang piller vi nettet af skinken FØR vi glasserer den), jeg bruger ikke nytårsfortsæt det er noget pjat og fungerer udelukkende som en undskyldning for at man kan stoppe i hovedet i julemåneden, jeg har tabt 15kg i 2011, jeg kan godt leve med at jeg nu har taget de 3 af dem på igen … de er nemlig væk inden Januar er omme :-)

Når det er sagt kan jeg jo godt have nogle målsætninger for år 2012, og nogen af dem er her:

  • Komme under 150kg
  • Gennemføre 1 år af min professionsbachelor
  • Tage kørekort (igen … og vel og mærke passe bedre på det næste)

3 klokkeklare og veldefinerede mål, derudover har jeg nogle lidt mere løst definerede ønsker:

  • Få mere tid til at hygge med vennerne.
  • Få mere kul på firmaerne, men med mindre knoklen og stress.
  • Få mere tid til musikken :-)

And most important … be awesome!

Happy new years, 2012!

0

Nagios module for monitoring the load on APC PDU Through SNMP

-

The script is made to work without the MIB’s installed and designed to use the threshold values set in the pdu itself, if you want to change this it should be fairly simple to understand and alter the code.

The code is release as is, under the GNU GPL v2 License, with no guarantee whatsoever:

#!/usr/bin/php
<?php
# Copyright (C) Mikkel Mikjaer Christensen, 2011
# Released under GNU GPL v2

DEFINE ("PDU_CURRENT_LOAD",             "SNMPv2-SMI::enterprises.318.1.1.12.2.3.1.1.2.1");
DEFINE ("PDU_OVERLOAD_TRESHOLD",        "SNMPv2-SMI::enterprises.318.1.1.12.2.2.1.1.4.1");
DEFINE ("PDU_NEAR_OVERLOAD_TRESHOLD",   "SNMPv2-SMI::enterprises.318.1.1.12.2.2.1.1.3.1");
DEFINE ("PDU_LOW_LOAD_TRESHOLD",        "SNMPv2-SMI::enterprises.318.1.1.12.2.2.1.1.2.1");

if (!@$argv[1])
{
        die("Usage: check_apc.php &lt;hostname&gt;\n");
}
else
{
        $hostname = $argv[1];
}

function getvalue($id)
{
        global $hostname;

        if (!$ret = @snmpget($hostname, 'public', $id))
        {
                die("CRITICAL: No response from pdu: $hostname\n");
                die(2);
        }
        if (snmp_get_valueretrieval() & SNMP_VALUE_OBJECT) {
                die("CRITICAL: No response from pdu: $hostname\n");
                die(2);
        }
        else
        {
                $r = preg_split("/: /",$ret);
                return $r[1];
        }
}

$current=(getvalue(PDU_CURRENT_LOAD)/10);
$low=getvalue(PDU_LOW_LOAD_TRESHOLD);
$overload=getvalue(PDU_OVERLOAD_TRESHOLD);
$warning=getvalue(PDU_NEAR_OVERLOAD_TRESHOLD);

if (false)  // Change to true for debug
{
        print "Curent load            : $current A\n";
        print "Lowload threshold      : $low A\n";
        print "Overload threshold     : $overload A\n";
        print "Near overload treshold : $warning A\n";
}

if ($current < $low)
{
        print("CRITICAL: PDU Underloaded by ".($low-$current)." A, total: $current A\n");
        die(2);
} else if ($current > $overload)
{
        print("CRITICAL: PDU Overloaded by ".($current-$overload)." A, total: $current A\n");
        die(2);
} else if ($current > $warning) {
        print("WARNING: PDU Within ".(($current-$overload) * -1)." A of overload, total: $current A\n");
        die(1);
} else {
        print("OK: Current load $current A\n");
        die(0);
}

?>
0

Overvågning af VMware ESXi DIY style

-

VMware har flyttet authorized_keys til “/etc/ssh/keys-root/authorized_keys” smid din ssh nøgle herind i, og lav et script der parser output fra /bin/cim-diagnostic.sh

Jeg har lavet et eksempel på et script her som hiver storage-data ud:

<pre><?

## Hent data

exec(“ssh root@vmware.eksempel.com enum_instances VMware_StorageExtent”,$file);

$file = implode(“\n”,$file);
## Pil data fra hinanden
$a=preg_split(“/\n\n/m”,$file);

foreach ($a as $k=>$v)
{
$t=preg_split(“/\n/m”,$v);

foreach ($t as $k2=>$v2)
{
$t2 = preg_split(“/=/”,$v2);
$key=preg_replace(“/ /”,”",$t2[0]);
if ($key)
if ($t2[1] != ” (NULL)”)
$n[$key]=$t2[1];
}
if ($n)
$a2[]=$n;
}

## Goer noget med data

print_r($a2);

?>

Når scriptet udføres, og der vel og mærke er sat ssh  nøgler op, vil scriptet generere flg output:

Array
(
    [0] =&gt; Array
        (
            [HPVC_SAStorageExtent.DeviceID] =&gt; "HPVC_SAStorageExtent-MM1000EBKAF-9XG0LMK0",CreationClassName
            [SystemCreationClassName] =&gt;  SMX_ComputerSystem
            [SystemName] =&gt;  vmware.eksempel.com
            [CreationClassName] =&gt;  HPVC_SAStorageExtent
            [DeviceID] =&gt;  HPVC_SAStorageExtent-MM1000EBKAF-9XG0LMK0
            [Name] =&gt;  9XG0LMK0
            [Primordial] =&gt;  true
            [NumberOfBlocks] =&gt;  1953525168
            [BlockSize] =&gt;  512
            [TransitioningToState] =&gt;  12
            [EnabledDefault] =&gt;  2
            [RequestedState] =&gt;  12
            [EnabledState] =&gt;  5
            [HealthState] =&gt;  0
            [Caption] =&gt;  Disk 1 on HPSA1
            [ElementName] =&gt;  Disk 1 on HPSA1 : Port 1I Box 1 Bay 1 : 931GB : Data Disk
        )

    [1] =&gt; Array
        (
            [HPVC_SAStorageExtent.DeviceID] =&gt; "HPVC_SAStorageExtent-MM1000EBKAF-9XG0V2FH",CreationClassName
            [SystemCreationClassName] =&gt;  SMX_ComputerSystem
            [SystemName] =&gt;  vmware.eksempel.com
            [CreationClassName] =&gt;  HPVC_SAStorageExtent
            [DeviceID] =&gt;  HPVC_SAStorageExtent-MM1000EBKAF-9XG0V2FH
            [Name] =&gt;  9XG0V2FH
            [Primordial] =&gt;  true
            [NumberOfBlocks] =&gt;  1953525168
            [BlockSize] =&gt;  512
            [TransitioningToState] =&gt;  12
            [EnabledDefault] =&gt;  2
            [RequestedState] =&gt;  12
            [EnabledState] =&gt;  5
            [HealthState] =&gt;  5
            [Caption] =&gt;  Disk 2 on HPSA1
            [ElementName] =&gt;  Disk 2 on HPSA1 : Port 1I Box 1 Bay 2 : 931GB : Data Disk
        )
)

Næste projekt bliver at krølle det ned til et Nagios plugin ;-) 

Nagios Pluginet krævede kun flg. tilføjelser:

## Hvor mange raske diske har vi?

foreach ($a2 as $a)
{
        if ($a["HealthState"] == 5)
                $healthy++;
        else
                $failed[]=$a["Caption"];
}

$total = count($a2);

if ($total == $healthy)
{       
        print "OK: $healthy healthy out of $total total disks.";
}
else
{
        print "WARNING: $healthy healthy out of $total total disks. (failed:".implode(',',$failed).")";
}

Disclamer: Hvis du vælger at bruge koden er det dig eget ansvar at gennemlæse den, forstå hvad den gør og sikre sig at den virker som den skal. Jeg fralægger mit ethvert ansvar!
4

Anmeldelse af Superbest Online Shoppen

-

Jeg leder altid efter måder at spare tid på … og for at være helt ærlig gider jeg ikke handle ind … det er komplet spild af tid, jeg bliver stresset og i dårlig humør af det. Derfor har jeg længe overvejet at bruge nogen af de her famøse online supermarkeder, og det første “offer” blev så Superbest.

Jeg bestilte varer for små 1500kr, der var både grønsager, kød, konserves, shampo, tandpasta mv. altså kort sagt  skulle det dække mad i en ugestid og personlig hygiejne + div. husholdning i en månedstid eller to (når man bare er sig selv holder to pakker tandpasta længe :p), men alt var lovende jeg bestilte til levering Torsdag i denne her uge, der var ikke så meget at rafle om varene ville komme mellem 16 og 22, så jeg planlagde min dag efter at tage ud og svømme fra 13-15 og være hjemme ved 16 tiden til at modtage varene.

Da jeg var på vej ud af døren klokken 13.15 for at tage ud og svømme fik jeg en sms om at mine varer ville komme klokken 15-21 … nå det var jo ikke det som stod på siden, jeg sendte en mail og spurgte ind til det og fik samtidig med en mail hvor der stod at en del af de varer jeg havde bestilt var udsolgt. F.eks. havde de ingen tomater … kan godt være det bare er mig, men hvis ikke Superbest kan skaffe tomater så er der altså noget galt …

Nå men der var en fejl på hjemmesiden, og varene kom altså mellem 15 og 21, og jeg kunne ikke få nærmere at vide. Så jeg droppede svømningen og gav mig til at arbejde mens jeg ventede på mine varer, klokken blev 18 uden der skete noget og jeg var lidt utilfreds med at jeg havde aflyst min svømmetur uden grund. Klokken 21:15 ringede chaufføren og var faret vild … spurgte om vej, jeg stod sådan lidt … øh, nu har jeg ventet i 6 timer … og så ringer han og spørger om vej. Nå men, jeg tog det med et smil og guidede ham og da jeg endelig fik mine varer var klokken blevet halv ti … Jeg var godt skuffet.

Så kom vi til maden, den var … ja, den var der da. Kødet var sidste salgsdato … ikke overskredet, men det skulle spises idag. Oksekødet lugtede surt og muggent, ihvertfald den ene pakke, den smed jeg ud. Bøfferne så nogenlunde ud … dem skyndte jeg mig at smide på en pande og kalde for aftensmad, efter maden stegte jeg den pakke oksekød der ikke lugtede muggent og lavede den til chilli con carne og lagde den på køl.

Alt i alt så tror jeg ikke jeg bestiller der igen. Jeg får bedre varer ved at hente dem selv, og jeg skal ikke side hjemme og kukkelure en hel dag.

0

Bønnegryde

-

Ingredienser

2 dåser baked beans
2 dåser majs
1 dåse hakkede tomater
1 dåse perleløg
1 dåse tomatpasta
500g oksekød
1 pose text mex, chili con carne kryderi

steg kødet til det er brunt, tilsæt kryderiblandingen og tomatpastaen. Lad det simre et par minutter, majs og perleløg og lad det simre 5-10 min, tilsæt til sidst hakkede tomater og baked beans og lad simre 5-10 min igen.