f.zz.de
archives / 2016 /

09

VIM: Erkenntnis des Tages #2

Posted Thu 01 Sep 2016 05:38:58 PM CEST Florian Lohoff in

vim <filename> +10

Öffnet das File direkt an der Zeile 10

pwgen und yYzZ

Posted Thu 01 Sep 2016 09:19:12 PM CEST Florian Lohoff in

Die gute Tat für heute ist Debian Bug #836334

    commit acc97baf11505b5b741b3dde23b5855bf4eb8c88
    Author: Florian Lohoff <f@zz.de>
    Date:   Thu Sep 1 21:12:28 2016 +0200
    
        Add -r chars option for removing chars from password.
        
        The biggest annoyance on German Keyboards is the swap
        of y and z to the American Keyboard layout. Sometimes
        it cant be avoided to use American Keyboard e.g. on
        LOM/BMC/IPMI access. It would be nice to be able to
        avoid yYzZ in passwords because of this problem.
        As there will definitly be other Keyboard layouts
        which have the same problem add an option to avoid
        an arbitrary group of chars.

Sommerparty Filoo

Posted Fri 02 Sep 2016 03:44:43 PM CEST Florian Lohoff in

Wir fahren Quad ...

Ringkernspeicher herstellen

Posted Sat 03 Sep 2016 01:54:12 PM CEST Florian Lohoff in

Spannendes video wie in den 60ern Ringkernspeicher gemacht d.h. gefädelt wurde.

VIM: Erkenntnis des Tages #3

Posted Sat 03 Sep 2016 03:36:31 PM CEST Florian Lohoff in

CTRL-W =

Alle Fenster in etwa gleich groß machen ...

Rückreise ...

Posted Sat 03 Sep 2016 06:52:07 PM CEST Florian Lohoff in

Da scheint noch Firmenwachstum einkalkuliert ...

VIM: Erkenntnis des Tages #4

Posted Tue 06 Sep 2016 10:06:06 PM CEST Florian Lohoff in

Wir machen eine abbreviation - Für die .vimrc

iab ,,P <C-R>=substitute(system("pwgen -s 16 1"), '\n', '', 'g')

Danach lässt sich im insert mode einfach ein ,,P tippen und nach der eingabe eines space wird das ,,P durch ein 16 zeichen langes password ersetzt.

Natürlich kann man da auch anderes machen:

iab ,,U <C-R>=substitute(system("uuidgen"), '\n', '', 'g') iab ,,Y <C-R>=strftime("%a, %d %b %Y %T %z")

regfish meldet eine SQL injection

Posted Tue 06 Sep 2016 10:39:35 PM CEST Florian Lohoff in

Aha spannend - Mich hätte noch interessiert wie die drauf kommen das es nur eine geringe Menge ist.

Sehr geehrte Damen und Herren,

auf der regfish-Plattform wurde kürzlich der Versuch eines Angriffs per SQL Injection und daraufhin auch eine mögliche Schwachstelle im passwortgeschützten Bereich identifiziert, sodass der Diebstahl geringer Mengen persönlicher Daten unserer Kunden nicht ausgeschlossen werden kann.

Man fährt fort mit:

Bei dem Angriff handelte es sich, wie eingangs erwähnt, um eine möglicherweise erfolgreiche SQL-Injection. Unsere Infrastruktur wurde nicht kompromittiert und war zu keinem Zeitpunkt unter fremder Kontrolle.

Also eine SQL Injection ist jetzt schon irgendwie wenn jemand anders mit einem mal kontrolliert wie meine SQL Statements aussehen oder?

Naja ...

Ariane5 Explosion

Posted Wed 07 Sep 2016 08:04:54 PM CEST Florian Lohoff in

Es gibt ja den Mythos das die Explosion der Ariane5 seine Ursache in der konversion von Yards und Metern hatte.

Hier gibt es mal eine aufarbeitung der Fehler im Detail. Ein ganz banaler "Integer Overflow" wenn man einen 64bit in einen 16bit integer konvertiert. Die Ariane5 war einfach "schneller" als die Ariane4 für die das Modul geschrieben war. D.h. die Geschwindigkeit (in welcher Maßeinheit auch immer) passte nicht mehr in 16bit ... BOOM

Cisco Catalyst Stack

Posted Thu 08 Sep 2016 11:01:56 PM CEST Florian Lohoff in

Whats the point in building a stack of which the most visible "advantage" people say is the unified management point, when some commands simply dont work on the "other halve":

2960Sflexstack#sh platform port-asic stats drop gigabitEthernet 1/0/1
%Command Rejected: interface 'GigabitEthernet1/0/1' is not local port

mysql remote root 0day

Posted Mon 12 Sep 2016 04:37:26 PM CEST Florian Lohoff in

Also wenn ich mir das durchlese fallen mir sofort tonnen an schwächen in dem security modell von MySQL auf. Wieso darf ein normaler user das logging in eine Datei umändern? Warum darf ein user auf dem Server eine Datei erzeugen? Und warum ist der Workaround so kaputt?

Damit der db user nicht kaputt macht ist der workaround:

The issue was fixed by refusing to load config files with world-writable permissions as these are the default permissions applied to files created by OUTFILE query.

Da fällt mir nix zu ein. Der darf zwar alles kaputtschreiben aber wir lesen es halt einfach nicht wieder. Au backe

http://legalhackers.com/advisories/MySQL-Exploit-Remote-Root-Code-Execution-Privesc-CVE-2016-6662.html

Trompete oder nicht

Posted Tue 13 Sep 2016 09:45:16 AM CEST Florian Lohoff in

Wir haben eine neue Mama

Posted Tue 13 Sep 2016 03:29:03 PM CEST Florian Lohoff in

SMP mit unterschiedlicher Cache Linesize

Posted Tue 13 Sep 2016 06:40:17 PM CEST Florian Lohoff in

Von Fefe - Sehr spannender Bug. Mono Apps crashen randommäßig wenn sie auf BIG.little ARM SOCs laufen. BIG.little Architekturen kann man sich so vorstellen als würde man eine Multicore CPU bauen die zum einen Intel Xeons drauf hat und zum anderen Intel Mobile Celerons. Je nachdem wieviel Power das System braucht schaltet man dann die Cores ab. Wenn also das Phone im Standby ist läuft nur ein "little" core und sobald man das Telefon aufweckt werden 2-3 BIG cores gestartet die das Screen rendering übernehmen und die ganzen Apps befeuern.

Der Linux Kernel scheduled dann die Apps auf den Cores wie sie es halt brauchen. Wenn eine App ihre Timeslice immer schön aufbraucht wird sie irgendwann vom little auf den BIG core verschoben.

Jetzt gibt es "atomic" primitiven oder stack trampolines die davon ausgehen das es eine bestimmte cache linesize gibt. Wenn ich also einen stack trampoline erzeuge oder einen atomic Bereich schreibe muss ich dann mit Instructions dafür sorgen das die Cacheline zurückgeschrieben wird.

Wenn ich also von einer 64byte Cacheline ausgehe - Der Stack trampoline 40 byte hat und ich die Cacheline zurückschreibe gehe ich davon aus das alles aus dem D-Cache im Speicher landet und dann mit einem I-Cache invalidate alles neu gefetched wird. Wenn ich jetzt aber plötzlich auf einem "little" System bin das eine kleinere cacheline size hat, sagen wir mal 32 byte, dann flushe ich die letzten 8 byte meines Stack trampolines nicht in den Speicher und invalidiere auch 8 byte zu wenig im I-Cache. Führt dazu das wenn ich das dann ausführe die letzten 8 byte quasi "random" content haben.

Beliebig fies das zu finden.

Aber so ist das halt wenn SMP eben nicht mehr Symmetric ist.

http://www.mono-project.com/news/2016/09/12/arm64-icache/

uucp, stunnel, s_connect

Posted Tue 13 Sep 2016 09:47:30 PM CEST Florian Lohoff in

Es ist schon gruselig - Da will man nach 10 Monaten sein UUCP Store-And-Forward wieder in Betrieb nehmen und man stellt fest das Debian Squeeze und Jessie echt nicht mehr so miteinander wollen.

Jessies stunnel4 verweigert die compression mit zlib:

[!] Line 23: "compression = zlib": zlib compression is disabled in
the Debian package of OpenSSL

Was aber in squeeze mal default in der stunnel config war.

Dafür kommen Squeeze und Jessie wieder sich bei SSLv3 und TLSv1 in die Quere ...

Naja - es läuft wieder ... Das Notebook als die "dicke pipe" nach Hause ist wieder funktionsfähig ...

Daimler und Edith Kiss

Posted Wed 14 Sep 2016 02:58:13 PM CEST Florian Lohoff in

Eine supergeile Posse in Berlin über die Benennung der Straße vor der neuen Vertriebszentrale. Ich finde den Namen gelungen.

Ein Jahr danach

Posted Sun 18 Sep 2016 02:36:09 PM CEST Florian Lohoff in

Als Legal Präamble zu diesem Blogpost: Nichts davon kann ich belegen - Da ich keinen Zugang mehr zu meinen Firmenmails etc habe schonmal noch viel weniger. Es sind lediglich meine Eindrücke, Erlebnisse und Ergebniss von bestimmt 200 Gesprächen die ich geführt habe. Sollte der Eindruck einer Tatsachenbehauptung entstehen so ist das ein Fehler - Es ist alles fiktional - Also bis auf die Fristlose Kündigung. Nicht das man übermorgen hier mit einer Einstweiligen Verfügung steht wegen falscher Tatsachenbehauptungen - Ich würde es ihnen Zutrauen nach den Erfahrungen die ich gemacht habe.

Heute vor einem Jahr überreichten mir mein damaliger Chef Patrick Heinzberger und ein weiterer Kollege aus der Geschäftsleitung meine fristlose Kündigung. Nicht das man einen Grund hatte - bzw - Man hatte keinen den man wirklich schreiben wollte oder konnte. Wer will schon da stehen haben:

Warf einem Geschäftsführer Unterschlagung vor

Nicht das ich das getan hätte - dieses Wort habe ich nie benutzt aber das war das was man mir wiederum vorgeworfen hat. Die Frage: "Warum wird das nicht abgerechnet?" wird zu einem Unterschlagungsvorwurf. Vor allem wurden im laufe der Wochen und Monate angeblich ja Preislisten und Rechnungen gefunden. Also warum genau hat man dann die Kündigung ausgesprochen wenn man mir das einfach hätte beantworten können das es doch abgerechnet wird?

Wer es nochmal nachlesen möchte wie sehr sie doch nichts in der Hand hatten - Die Historie hatte ich ja schonmal aufgeschrieben.

Nach bestimmt 200 Gesprächen in den letzten 12 Monaten muss ich zusammenfassen das die Kündigung am meisten darüber sagt was vermutlich passiert ist. Nachvollziehen wird man davon nichts mehr können weil so wie ich vermute etwas passiert ist was wir in der Technik bei Vitroconnect immer als "Das Fahrtenbuch fälschen" belächelt haben. Die Indizien deuteten schon in den auf die Kündigungen folgenden Diskussionen darauf. Plötzlich tauchten neue angebliche Belege auf die Wochen vorher keine Erwähnung fanden. In den Gesprächen schien man auch nur darüber besorgt zu sein was denn ein besonderer Shareholder wohl macht wenn er Kenntnis erlangt. Hier hat es jetzt ja bei der VMCap einen Exit gegeben so das die Gefahr gebannt ist.

Ich kann mir das ganze nur so erklären das es am Ende ein Entscheidung war "Entweder Patrick oder Ich" ... Irgendjemand musste seinen Kopf hinhalten. Dann ist die Entscheidung natürlich einfach wenn man in der Position ist jemanden "Opfern" zu können.

Bei der Anschliessenden Diskussion über die Rücknahme der Kündigung ging es in meinen Augen lediglich darum eine schöne Geschichte schreiben zu können. Integrale Mitarbeiter entsorgen ist halt immer schlecht für die Stimmung. Also wurde eine Geschichte konstruiert in der man mir vermeintlich eine Rückkehr ermöglicht und dann sukzessive die Bedingungen schlechter macht bis ich sagen muss das ich mir das nicht leisten kann. Daraufhin konnte man sich intern Prima hinstellen:

Tja - es ist sehr schade aber der Florian wollte ja nicht mehr

Man könnte den Eindruck gewinnen das es einen professionellen Spindoktor gab. Danach geht man noch hin und Bauchpinselt Mitarbeiter mit teuren Notebooks und alles was das Herz begehrt und schon ist vergessen was passiert ist.

Als ein weiteren Punkt muss man halt auch feststellen das das Menschen oder Mitarbeiterbild sehr befremdlich ist. Wenn ein Geschäftsführer scheinbar versucht nach der fristlosen Kündigung eines Mitarbeiters zu verhindern das dieser einen neuen Job bekommt, und wenn das doch klappt, versucht über den neuen Arbeitgeber Druck auszuüben, zeugt das in meinen Augen von einem kaputten Menschenbild - Offensichtlich hält man Mitarbeiter eher für Leibeigene.

Man könnte auch der Meinung sein das es hier um Nachtreten und Rache geht, was ja auch wieder nur zeigt wie Wund der Punkt war den ich getroffen habe und wie wenig belastbar die Belege gewesen wären hätte man sie wirklich mal vorzeigen müssen.

Die ganze Aktion hat mein "Lebenslanges Schwarzbuch" von 1er auf 3 Personen anwachsen lassen. Mit Menschen die keine Skrupel damit haben mir vorsätzlich zu Schaden werde ich nicht zusammenarbeiten.

Und für das nächste mal sollte es eine Warnung sein wenn man fast 2 Jahrzehnte einen Chef hat von dem kein einziges Detail aus dem Privatleben bekannt ist, nicht einmal der Wohnort - Hier geht es wohl darum die eigene Angriffsfläche zu minimieren.

IP normalisierung und parsing

Posted Mon 19 Sep 2016 03:14:02 PM CEST Florian Lohoff in

Es gibt für Perl diverse IP Adresse Normalisierungs oder Manipulations Module. Jedes ist auf seine Weise kaputt.

Normalerweise nehme ich gerne NetAddr::IP weil es einfach einen String konsumiert und mir eben den Host oder Network oder die Masklen zurückliefern kann. Dazu bekomme ich auch entsprechend die Normalisierte Schreibweise zurück - Gut um z.b. DNS Zonen zu schreiben. Heute war allerdings die Natur wieder besser. Es gibt Content da behauptet NetAddr::IP es sei eine ipv4 Adresse - wenn man es ausgibt kommt eine IPv6 Adresse bei raus. Jetzt muss Mutter Natur nur jemanden Produzieren der diesen Content da rein wirft - Aber auf Mutter Natur ist ja verlass:

libnetaddr-ip-perl: Parses number - version() == 4 - prints v6

Es gibt natürlich andere Module - Net::IP was aber Probleme in der Normalisierung hat. So ist der default bei Net::IP die IPv6 Adressen nicht in ihre Normalisierte shortform zu bringen wie es das RFC5952 verlangt.

perl -MNet::IP 
    -e '$i=new Net::IP("2001:DB8::/32") or die (Net::IP::Error());
        print $i->ip() ."\n";'
    2001:0db8:0000:0000:0000:0000:0000:0000

Also findet man ''$i->short()'' was funktioniert

perl -MNet::IP 
    -e '$i=new Net::IP("2001:DB8::/32") or die (Net::IP::Error());
        print $i->short() ."\n";'
2001:db8::

Nur macht das dann bei IPv4 ärger:

    perl -MNet::IP 
    -e '$i=new Net::IP("192.168.0.0/24") or die (Net::IP::Error());
        print $i->short() ."\n";'
192.168.0

Mal davon abgesehen das es nur Netze verarbeiten kann und sowas wie ''192.168.1.22/24'' komplett verschmäht.

Dann gibt es noch Data::Validate::IP was ich zugegebenermaßen noch nicht probiert habe. Da es aber auch keine Normalisierung hat löst das Modul auch nur die Hälfte der Probleme. Vielleicht sollte ich doch mal ein eigenes IP Parsing Modul & Validation Module schreiben. Wie kommt man an einen CPAN account?

Printer discovery in 2016

Posted Tue 20 Sep 2016 02:45:23 PM CEST Florian Lohoff in

Ist das echt euer ernst? Printer Autodiscovery durch SNMP get request an die Broadcast Adresse? Ich dachte dafür gibt es SSDP über Port 1900 UDP oder IPP UDP Port 631:

14:42:15.866096 IP (tos 0x0, ttl 64, id 8379, offset 0,
    flags [DF], proto UDP (17), length 71)
    192.168.1.198.44285 > 192.168.1.255.161: 
    { SNMPv1 { GetRequest(28) R=1  .1.3.6.1.2.1.25.3.2.1.2.1 } } 
14:42:15.867962 IP (tos 0x0, ttl 64, id 43867, offset 0,
    flags [none], proto UDP (17), length 80)
    192.168.1.3.161 > 192.168.1.198.44285: 
    { SNMPv1 { GetResponse(37) R=1  .1.3.6.1.2.1.25.3.2.1.2.1=
        .1.3.6.1.2.1.25.3.1.5 } } 

Cisco - Ein Interface hat viele Namen

Posted Tue 20 Sep 2016 03:49:55 PM CEST Florian Lohoff in

Wieso liebe Cisco? Das Interface heisst TenGigE0/0/2/0 - Aber nur in der ipv4 arp tabelle und in der running config. Bei IPv6 heisst es dann Te0/0/2/0. Auf den Catalysts gibts die abkürzung auf auf TeX/Y/Z auch - Da heisst das eigentliche interface dann aber ''TenGigabitEthernet''.

RP/0/RSP0/CPU0#sh ipv6 ne | inc fe80::224:dc00:6f77:5fc0
Tue Sep 20 13:50:42.199 UTC
fe80::224:dc00:6f77:5fc0                 44   0024.dc77.5fc0 REACH Te0/0/2/0            0/0/CPU0    

RP/0/RSP0/CPU0#sh arp | inc 0001.4227.7360  
Tue Sep 20 13:51:40.536 UTC
80.81.192.11    01:50:36   0001.4227.7360  Dynamic    ARPA  TenGigE0/0/2/0

Buchtips am Morgen

Posted Wed 21 Sep 2016 09:07:12 AM CEST Florian Lohoff in

Da kommt man nichtsahnend ins Büro und hat neue Buchvorschläge da liegen.

Prosody, LDAP und Roster

Posted Wed 21 Sep 2016 07:30:07 PM CEST Florian Lohoff in

Schön das Prosody in Lua geschrieben ist. So kann man schnell mal dinge fixen ohne gleich alles neu bauen zu müssen.

So ist mir vor Monaten schon aufgefallen das ich meinen Roster gar nicht mehr updaten kann. D.h. Kontakte Löschen geht - nach dem Restart vom Pidgin sind die wieder da. Des Rätsels Lösung war ein fehler im mod_auth_ldap der zwar bei der Authentisierung ein scope=subtree hat aber nicht beim user finden um festzustellen ob ein user überhaupt existiert um den Roster zu speichern ...

function provider.user_exists(username) log("info", "LDAP User Exists check - Username "..username.." in "..ldap_base); local l = do_query({ base = ldap_base; filter = "(uid="..ldap_filter_escape(username)..")"; scope = "s"; }); return l; end

Siemens Scalance

Posted Fri 23 Sep 2016 09:56:47 PM CEST Florian Lohoff in

Am Montag tauche ich mal in die Welt der Industrial Ethernet ab und Debugge mal Industrieautomation und deren Netz.

Ich habe das seichte Gefühl das wird ein Himmelfahrtskommando, wir bereiten uns mal mit Doku und vielleicht einem Seriellen Kabel vor.

Ach ja - Und Sicherheits ESD Schuhen und Reinraumanzug.

IAA Nutzfahrzeuge 2016

Posted Sun 25 Sep 2016 10:15:10 PM CEST Florian Lohoff in

Heute war ich spontan mal auf der IAA Nutzfahrzeuge in Hannover. Und habe mich auch sofort in mein hoffentlich neues Dienstfahrzeug verliebt. Ist nicht so Prollig wie Alpina B3 oder C63AMG mit denen man nicht beim Kunden vorfahren kann. Mit dem Unimog macht man eher den Eindruck, hier ist man auf alles vorbereitet ;)

Und futuristische Studien gab es natürlich überall. Hier mal Iveco aber da haben sich MAN, Mercedes, Scania und Volvo nichts getan.

Und natürlich ein Fahrrad darf auf der IAA natürlich auch nicht fehlen.

Auch ZF war mit einem großen Stand vertreten - Musste ich mich doch gleich mal umsehen was da morgen auf mich zukommt.

Cisco IOS XE - IPv4 Reassembly

Posted Thu 29 Sep 2016 08:42:52 AM CEST Florian Lohoff in

Soeben kam ein Cisco Advisory rein:

Cisco Security Advisory: Cisco IOS XE Software IP Fragment Reassembly Denial of Service Vulnerability

Da frage ich mich was Cisco so die letzten Jahre getrieben hat. Sowas findet man doch mit Fuzzing und die hatten jetzt ein paar Jahre Zeit das zu finden. Und dann im IPv4 Stack Reassembly. So quasi eine der zugänglichsten Stellen im IP Stack.

The vulnerability is due to the corruption of an internal data structure that occurs when the affected software reassembles an IPv4 packet. An attacker could exploit this vulnerability by sending crafted IPv4 fragments to an affected device. A successful exploit could allow the attacker to cause the device to reload, resulting in a denial of service (DoS) condition.

Kopfschüttelnd.

Datenmodell

Posted Thu 29 Sep 2016 07:13:45 PM CEST Florian Lohoff in

Heute habe ich mal den sauren Apfel gebissen und die letzte große Modelländerung durchgebaut. "subshelves" oder "subtending chassis".

Das Problem sind z.b. Firewall Cluster, Switch Stacks oder auch die abgesetzten ASR9k Shelves alias ASR9000v. Die Firewall Cluster und Switch Stacks bestehen typischerweise aus 2 oder mehr Nodes die zusammen ein Netzwerkdevice bilden. Es gibt nur einen Management Zugang. Die Physischen Bauteile haben aber mitunter unterschiedliche Einbauorte und somit sind die Interfaces in unterschiedlichen Racks. Wenn man jetzt einen Verkabelungsplan erzeugt der Kabellängen und Endpunkte beinhaltet dann kommt da natürlich mist bei raus.

Der andere Fall ist bei den ASR9ks die sog. Port-Extender haben d.h. ein 10G Port wird zu 48 1G Ports. Diese können nicht nur im Nachbar Rack sondern auch in einem anderen Brandabschnitt sein. Damit suggeriert dann ein Verkabelungsplan das irgendwo noch ganz viele Inhouse-Cablings in Benutzung sind.

Das Datenmodell in die FiDB bringen und 2 Devices der beiden Einsatzzwecke umzudokumentieren war jetzt eher eine Sache von 5 Minuten. Dann alle bestehenden Auswertungen und Nutzer anzupassen war schwieriger. So Tools wie Exporte in die Überwachung - icinga1, icinga2 und DNS verlassen sich darauf das immer klar ist um was für einen Typ Hardware es sich handelt. Nur jetzt hat das "Virtuelle Chassis" evtl. keinen Hardwaretyp mehr sondern nur noch die Subshelves.

Ich habe aber hoffentlich jetzt alles erwischt. Der Verkabelsungsplan listed jetzt für das Ziel der Kabel den Einbauort des Subshelves nicht mehr den des Hauptdevices. Ausgehend von einem virtuellen Devices kommen jetzt für jedes Subshelf ein separater Kabelplan.

Und das Eyecandy musste natürlich auch sein: Die grafische Rackübersicht zeigt die Subshelves mit ihren richtigen Einbauorten.

Der semantische Checker der Doku prüft ob "virtuelle chassis" Interfaces vom Typ Physical haben und natürlich umgekehrt, d.h. Subshelves haben nur physische und keine virtuellen Interfaces.

Und natürlich haben virtuelle chassis keinen Einbauort d.h. Rack und Höheneinheit und auch keine Stromaufnahme.

Industrial Ethernet ist kein Feldbus

Posted Thu 29 Sep 2016 07:37:40 PM CEST Florian Lohoff in

Es gibt so Verkabelungen in Industrial Ethernet Anlagen da reibt sich der Netzwerker die Augen und fängt an ungläubig zu Wimmern.

ProfiNET ist halt immer noch Ethernet und wenn man solche Verkabelungen sieht ist eigentlich klar das bei einer Tennisplatz großen Automatisierungsanlage die maximale Anzahl der Bridges in einem Ethernet lang und satt überschritten wird. Nicht das das an sich kritisch ist aber diese 2 Port Bridges in den Motorsteuerungen überwacht jetzt niemand und jede einzelne kann einem in die Suppe spucken.

Verstehen kann ich die Jungs schon auch. Wenn eine Siemens für einen 8 Port Scalance Switch für die Hutschiene deutlich 4 stellige Beträge aufruft dann wird Ethernet auch zum Feldbus. Und die Scalance Switche sind jetzt doof wie Brot. Das kann ja sein das da drauf steht Managed switch - Aber mehr als Telnet und nen bischen gucken ob was kaputt ist geht da auch nicht.

Elasticsearch rant

Posted Fri 30 Sep 2016 09:58:51 AM CEST Florian Lohoff in

Elasticsearch etabliert sich ja gerade zu dem suchwerkzeug schlechthin. Ich habe das dazu benutzt um im RT vernünftig suchen zu können. Leider sind natürlich so supportfunktionen wie index dumpen und restoren von Haus aus nicht vorhanden. Wer braucht sowas auch schon.

Man sucht also rum und stolpert über elasticdump was, wie alle neumodernen hipstertools, unbedingt in node geschrieben sein müssen. Installieren und bauen und was kommt raus?

'Cannot switch to old mode now'

WTF? Google hilft - das nodejs ist zu alt. Debian/Jessie halt. Die Lösung die überall propagiert wird ist ein neues node zu installieren und das Kommando wird gleich mitgeliefert:

sudo npm install -g n
sudo n stable

WTF? Das entspricht curl-bashing ...

wget <randominterneturl> | sudo bash 

Aber das scheint gerade total modern zu sein sich ohne irgendwelche Sicherheitsmechanismen einfach Zeugs aus dem internet zu saugen, ohne checksum, ohne signature, direkt als binary, und das irgendwo als root zu installieren. Ist doch nur nen Container oder ne VM.

Naja - Ist ne Wegwerf VM - wir spielen mal mit. Okay - Also elasticdump geht dann endlich - d.h. es kann nicht nur dumpen sondern auch restoren.

Aber warum sind die zahlen unterschiedlich:

Fri, 30 Sep 2016 08:03:10 GMT | got 100 objects from source file (offset: 0)
Fri, 30 Sep 2016 08:03:10 GMT | sent 100 objects to destination elasticsearch, wrote 94

Wo sind die 6 Dokumente hin? Und welche waren das? Und warum mag der nicht mehr? Hier ist man aufgeschmissen. Also machen wir es mal wieder zu Fuß:

for i in {1..100}; do
    echo $i;
    head -$i rt2.json |\
        tail -1 >input.json;
    node_modules/elasticdump/bin/elasticdump \
        --input input.json \
        --output http://localhost:9200/rt2;
done

Damit man dann zumindest die Zeile im input file kennt die nicht genommen wird. Nicht das elastic oder elasticdump logged warum da was schief geht.

Des Rätsels Lösung war das ein Feld das als Date indiziert werden soll mit "Not set" gefüllt war. Die support tools von elastic sind aber totaler Müll. Warum gibt es keinen json dump/restore? Mit vernünftigen Parametern? Der auch abgelehnte Dokumente gleich auswirft?

Diese ganzen Hipster tools müssen einfach nochmal 5 Jahre auf die Weide.