RSS Feed

Styczeń, 2011

  1. Chrome i OSX #fail

    Styczeń 30, 2011 by 0verlord

    Korzystam z tej przeglądarki. Nie zżera mi tyle ramu co Safari i jest od niego mniej toporna mimo ogólnie ładnego jabłkowego dizajnu.
    Szarpało mi kiedyś ramem na macu, więc odpaliłem monitor. Mój osobisty zaobserwowany rekord memory leaku, to było 897MB. Komp zwolnił na maksa i zaczął kręcić bez sensu wiatrakami z otwartym terminalem i właśnie Safari…
    Myślałem, że to jakieś flashe czy inne śmieci, ale jak wisiało dalej z jedną otwartą pustą zakładką i nie chciało ramu oddać, poddałem się.

    Pomijając czy Chrome jest lepsze, czy gorsze, czy szpieguje mnie bardziej czy mniej, korzystam. Natomiast odkryłem ciekawy fail. Chrome na OSX jest zintegrowane z keychain’em, więc zapisywane przez nie hasełka lądują ładnie w systemowym narzędziu do ich przechowywania. Nie trzeba żadnych 1passwd czy innych płatnych wynalazków. Keychain ma wszystko co trzeba.

    Ci, którzy korzystają, zapewne widzieli nie raz komunikat o zapisywaniu haseł dla danej strony. Ja na tym pasku kliknąłem w „nigdy dla tej witryny”.

    Po przeklikaniu wszystkich opcji, nie znalazłem wyłączenia tej opcji. Pewnie, dla Windowsa po kliknięciu w „pokaż hasła” można sobie odznaczyć, ale w Macu odpala się keychain i tyle w temacie. Ciężko mi to nawet było wygooglać, ale w końcu jeeeest. Usability tak własnie wygląda, patrzcie i uczcie się ziomy i ziomówy… A zacznijcie od uruchomienia terminala (CMD+spacja, terminal)

    cd Library/Application\ Support/Google/Chrome/Default
    sqlite3 Login\ Data
    delete from logins where blacklisted_by_user = 1;
    .quit

    Znalezione tu.

    Oczywiście ten wariant wylewa dziecko z kąpielą, lepsze by było select * from logins where blacklisted_by_user = 1;, odnalezienie wpisu, na którym popełniliśmy #fail i np. update logins set blacklisted_by_user=0 where origin_url='ten własnie sajt', albo po innym polu, które można sobie odczytać przy pomocy polecenia .schema logins.


  2. Instalacja Debiana (squeeze) bez monitora przez port szeregowy i sieć

    Styczeń 29, 2011 by 0verlord

    EDIT: jak się okazało, to wszystko poniżej, to kosmetyka :-/. Można szybciej i prościej. Wpisu w pxelinux.cfg/default nie ominiemy, natomiast po pokazaniu się pierwszego okienka na opcji install wciskamy tab, i wpisujemy taki kod:
    –quiet console=ttyS0,9600n8 panic=30

    Potem przyjmujemy enterem na klatę informację o niewłaściwym trybie vga, czekamy chwilę i widzimy box z wyborem języka.
    Niżej można już nie czytać chyba, że ktoś lubi ładnie zrobione instalatory.

    ### było.
    Można, tylko po co 😉
    Generalnie miałem zainstalować hosta do monitoringu, tylko tak się dziwnie złożyło, że w domu mam same laptopy, a monitora nie uświadczysz. Komputer ma port szeregowy i kartę sieciową, więc powinien zadziałać netboot i konsola szeregowa.
    Jak się okazało, akcja jest całkiem prosta.

    Zestawiamy środowisko do netboota, np. wg tego linka albo innych, wujek Google zna tego mnóstwo. Potem szukamy katalogu pxelinux.cfg/ a w nim pliku default.

    Dodajemy na pierwszej pozycji tego pliku linijkę:
    SERIAL 0 9600 0

    Nie dodajemy tam opcji znanych z gruba, –serial itp., bo się przywiesi i nie pokaże nic.

    Potem dodajemy odpowiednią pozycję w menu, w debian-installer//boot-screens/menu.cfg

    menu begin serial
    menu title Serial console
    label mainmenu
    menu label ^Back..
    menu exit
    include debian-installer/i386/boot-screens/stdmenu.cfg
    include debian-installer/i386/boot-screens/sadtext.cfg

    z tegoż pliku kasujemy linijki:
    include debian-installer/i386/boot-screens/amdtxt.cfg
    include debian-installer/i386/boot-screens/gtk.cfg
    include debian-installer/i386/boot-screens/amdgtk.cfg
    include debian-installer/i386/boot-screens/adgtk.cfg
    include debian-installer/i386/boot-screens/amdadgtk.cfg
    include debian-installer/i386/boot-screens/dtmenu.cfg

    tworzymy plik debian-installer/i386/boot-screens/sadtext.cfg w zawartością jak niżej:
    default sinstall
    label sinstall
    menu label ^Install
    menu default
    kernel debian-installer/i386/linux
    append vga=normal initrd=debian-installer/i386/initrd.gz -- console=ttyS0,9600n8 quiet
    label expert
    menu label ^Expert install
    kernel debian-installer/i386/linux
    append priority=low vga=normal initrd=debian-installer/i386/initrd.gz -- console=ttyS0,9600n8
    label rescue
    menu label ^Rescue mode
    kernel debian-installer/i386/linux
    append debian-installer/serial-console vga=normal initrd=debian-installer/i386/initrd.gz rescue/enable=true -- console=ttyS0,9600n8 quiet
    label auto
    menu label ^Automated install
    kernel debian-installer/i386/linux
    append auto=true priority=critical vga=normal initrd=debian-installer/i386/initrd.gz -- console=ttyS0,9600n8 quiet

    i to chyba wszystko.

    Minicoma zestawiamy – co w sumie jest dość dziwne – z prędkością 9600 8N1, mamy nadzieję, że komp odpali z PXE (często jest wyłączone, wtedy niestety nie obejdzie się bez monitora, żeby to włączyć – natomiast u mnie jak się okazało, komp bootował z PXE), i po boocie widzimy piękne okienko instalatora po kabelku. Okienko wygląda np. tak:

    Wybieramy z niego opcję „Serial console” i dalej instalacja leci już zwykle. ASCII p0wahhh. Chodzi topornie, ale w sumie tylko do zainstalowania konsoli po sieci. Potem już czyste ssh. Potrzeba matką wynalazku heh.


  3. Jak to Pan Technik przepiął kabel od konsoli Panu Adminowi

    Styczeń 28, 2011 by 0verlord

    Śmieszno-smutne.

    Generalnie mam w szafie dwa hosty, jeden nad drugim, a nad nimi jeszcze switch. Switcha miałem do tej pory przypiętego serialem do routera, bo tam to miało więcej sensu.
    Nagle zniknęło zarządzanie po serialu. No to poprosiłem Kogo Trzeba, żeby mi tenże kabelek podopychał (chociaż dałbym głowę, że zakręcałem śrubki właśnie po to, żeby nikt nie musiał nic dopychać).

    – zrobione, tak, dopchnąłem kable, tak super ekstra i działa na pewno. Tak, na pewno jest do właściwego serwera. Do tego Della. Tak, do tego czarnego.

    Gwoli wyjaśnienia – są dwa, jeden jest srebrny z przodu, a drugi czarny. Z tyłu w sumie nie pamiętam jakie są.
    Klikam minicoma – niema. Podsumowałem chińską technologię wiązanką kwiatów polskich. Ale coś mnie tknęło i popatrzyłem na hosta obok. Tak, zarządzanie jest i owszem, ale w tym drugim Dellu. W tym srebrnym.


  4. Notify_via_jabber + linki w htmlu

    Styczeń 27, 2011 by 0verlord

    Obiłem się o problem z powiadamianiem przez jabbera. Wygodniej by było, jak by można było sobie klikać w powiadomienia i generować linki do hosta, który ma problem i do wszystkich jego serwisów.

    Sprawa generowania linka okazała się prosta – trzeba podmienić jedną linijkę w index.php interfejsu webowego Nagiosa (w Debianie siedzi to wszystko w /usr/share/nagios3/htdocs).

    Rzeczony kawałek pliku powinna wyglądać tak (z jakiegoś powodu wordpress wyżyna mi tagi, pre i code nie działają – dziwne)

    frameset cols="180,*">
    <frame src="side.php" name="side" frameborder="0">
    <!-- <frame src="main.php" name="main" frameborder="0"> -->
    <frame src="/cgi-bin/nagios3/status.cgi?navbarsearch=1&host=<?= $_GET['host'] ?>"
      name="main" frameborder="0">

    Wtedy do widoku serwisów dla dowolnego hosta można się odwołać z urla, np. tak:

    http://host/cgi-bin/nagios3/status.cgi?navbarsearch=1&host=$HOSTNAME$

    I nie stracić przy tym menu bocznego.

    Działa to tylko dla $HOSTNAME$ ale wystarczy. Wtedy widzimy ładny statusik.
    Żeby nie popsuć istniejącego interfejsu, zrobiłem sobie dodatkowy index2.php.

    Kolejny problem, jaki się pojawił, to generowanie chatów do jabbera z linkami html. Defaultowo moje Adium wykrywa wiele linków, ale fajnie by było taki długi url opakować grzecznie w a href= i nie mieć długaśnych i brzydkich linków.

    Standardowe skrypty typu notify_via_jabber czy sendxmpp generują normalne wiadomości, i ciężko tam wstawić rawy definiujące standardy htmlowe. Długo grzebałem w sieci, aż w końcu znalazłem ten link, a w nim poprawiony skrypt notify_via_jabber obsługujący tagi htmlowe. Można dodać ten url, o którym pisałem wyżej i będzie się klikał. Piękne.
    Hosanna.

    Na wpadek wszelki plik w załączniku. Dobry kontent jest coraz ciężej znaleźć w sieci.
    extended_notify_via_jabber


  5. Wot, przygoda – czyli jak popsuć filtrowanie, żeby przez ftp nie można było wrzucać plików .exe

    Styczeń 25, 2011 by 0verlord

    Pan klient chciał, żeby mu zaktulizować soft na serwerze. Hostingownia zapewnia cpanel, więc problemu nie powinno być.
    Wypakowałem sobie katalog, żeby już nie było siupy, klikam upload po ftpie. Pcha, pcha, nagle timeout.
    Badam, serwer umarł. Ale coś mnie tknęło i sprawdziłem z innego hosta. Działa. Czyli -j DROP dostałem.

    Po bliższych badaniach i próbach uploadu uwaliło mi wszystkie hosty, z jakim mogłem się odbić (tak, mogłem jakieś open-proxy, ale po co). Co było robić, poszedłem spać.

    Rano dzwonię do pana prowajdera, zgłosiłem grzecznie problem, problem został przyjęty i zbadany bardzo szybko, i dostałem odpowiedź, że wycinało mnie, bo próbowałem pchać na ftpa plik *.exe, a on jest zły strasznie ten plik, pewnie wirus, więc profilaktycznie system wczesnego ostrzegania mnie wziął i wyciął. Zapchałem zatem archiwum na ftpa, i mimo mojej szczerej miłości do usability cpanelu – wypakowałem sobie archiwum z jego poziomu.

    Z tego miejsca chciałbym podziękować za szybką diagnozę mojego problemu w domenomania.pl, natomiast zgłoszę votum separatum od sensowności takiego wyżynania całego adresu IP – w moim przypadku nie mogłem nawet dostać się do samego cpanelu, chociażby po to, żeby zobaczyć jakiś log, czy co. Natomiast obsługa klienta – cacy ;-).


  6. Redmine i konwersja z Sqlite do MySQL/PgSQL

    Styczeń 25, 2011 by 0verlord

    Ze względu na ilość projektów, które prowadzimy w fabryce i coraz więcej 500tek wynikających z trzymania bazy w Sqlite, a i z powodu braku możliwości używania jednego plugina do raportowania czasu panu klientowi, przyszedł czas na migrację. Jak się okazało, była ona banalnie prosta. Info jest tu. Zapuściłem i zadziałało – u mnie bez jednego buga. Szczerze polecam.


  7. nagiosgraph,rrd, nan i brak wartości na grafie

    Styczeń 24, 2011 by 0verlord

    Ot takie coś trafiłem.

    on Jan 24 18:32:20 2011 p1.pl error RRDs::update ERR /var/spool/nagiosgraph/rrd/internal/HTTP___time.rrd: conversion of ‚0,000000’ to float not complete: tail ‚,000000’

    Efektem tego komunikatu jest wyświetlanie pustego wykresu z ostatnimi wartościami typu nan (not a number) czyli ogólnie nic nie wyświetlającego.
    Po dłuższej chwili dłubania wyszło i szukania, że jest to błąd spowodowany ustawieniem localesów (konkretnie wartości LC_NUMERIC) na coś innego niż „C”. U mnie jest pl_PL.UTF-8, ale niestety skrypty perlowe upychające perfdata do rrd niezbyt to rozumieją.

    Sam komunikat wbrew pozorom jest dość jasny – chodzi tutaj o skrypt p1.pl, który w domyślnej instalacji siedzi w /usr/lib/nagios3
    Dodajemy temu skryptu na początku coś w tym stylu:

    BEGIN {
     $ENV{LC_NUMERIC} = 'C';
    }
    

    albo cokolwiek innego ustawiającego LC_NUMERIC na ‚C’ i nagle nan już jest normalną wartością. Eh, uwielbiam takie akcje.

    W każdym razie, ten problem dotyczy wszystkich localesów, w których poprawną miejsce dziesiętne w liczbie jest oznaczane przecinkiem, a nie kropką.


  8. jak odzyskać klucze do windowsa i innych produktów M$

    Styczeń 20, 2011 by 0verlord

    Odbiłem się ostatnio o problem, znajomy przyniósł Windę z uszkodzonym dyskiem, niby proste, ale mogło się skończyć reinstalem – odwracam lapka, naklejka zatarta. A że to OEM, to dostał tylko fakturę i naklejkę.

    Jest takie fajne narzędzie, dostępne tutaj ,
    które potrafi powyciągać klucze z rejestru na dysku. Rejestr Windozy najczęściej siedzi w

    c:\windows\system32\config
    

    i są to pliki z rozszerzeniem .pol, (software.pol itd.).

    Odpalenie tego programiku na działającym Windowsie od razu pokazuje wszystkie klucze, które program jest w stanie wyjąć, (windowsa i offica – od ręki). Jeżeli mamy do dyspozycji tylko dysk (po padzie np.) trzeba znaleźć powyższy katalog, i wskazywać po kolei pliki. Ale na pewno zadziała i odzyskamy co trzeba. Testowałem i działa ok.


  9. Monitorowanie interfejsu po snmp w Nagiosie

    Styczeń 15, 2011 by 0verlord

    Skryptów sprawdzających to wszystko jest dość sporo. Jeżeli ktoś nie ma potrzeby monitorowania ani rysowania liczby pakietów na interfejsie (pps), może skorzystać z np. check_snmp_int.pl lub jego kolegi check_snmp_netint.pl
    Powyższe skrypty doskonale dają sobie radę z interfejsami i ruchem na nich.

    Natomiast jeżeli ktoś zapragnie monitorować ppsy, w zasadzie zostaje mu tylko kawałek pakietu SNMP4Nagios, który posiada odpowiednie narzędzie – check_if_by_snmp. Narzędzie to ma jeden zasadniczy problem – należy mu podać do monitorowania nie interfejs, tylko index interfejsu, który można sobie wyciągnąć z snmpwalka po tablicy iso.3.6.1.2.1.31.1.1.1.1 np. tak:

    snmpwalk -v 2c -c   iso.3.6.1.2.1.31.1.1.1.1 | grep 
    

    Problem w tym, że indeksy interfejsów nie są stałe i moga się np. zmienić po reboocie, a na pewno zmienią się indeksy interfejsów vlanowych (802.1q) jak je dodamy lub/i odejmiemy.

    Popełniłem banalnie prosty wrapper w bashu do załatwienia tego problemu, wygląda on tak:

    #!/bin/bash 
    
    while getopts "H:C:I:" Option
    do
      case $Option in
        H)  HOSTADDRESS=$OPTARG;;
        C)  COMMUNITY=$OPTARG;;
        I)  IFACE=$OPTARG;;
      esac
    done
    shift $(($OPTIND - 1))
    # Move argument pointer to next.
    
    IFINDEX=`/usr/bin/snmpwalk -v 2c -c $COMMUNITY \
    $HOSTADDRESS iso.3.6.1.2.1.31.1.1.1.1  | grep "$IFACE" | \ 
    cut -d' ' -f1 | cut -d'.' -f12`
    
    /usr/lib/nagios/plugins/check_if_by_snmp -H $HOSTADDRESS -C $COMMUNITY \ 
    -i $IFINDEX -I $IFACE -T -N -L -R /var/lib/nagiosgraph/rrd/
    

    Wrapper pobiera parametry przekazywane do skryptu przez Nagiosa, robi snmpwalka, grepem wyjmuje indeks snmp interfejsu, który podamy jako argument, po czym wstawia go do oryginalnego skryptu z SNMP4Nagios. W ten sposób zawsze będziemy monitorować właściwy interfejs, a nie tylko ten sam indeks.

    Wyjaśnienia wymaga chyba tylko ostatnia linijka i opcja -R, która pokazuje, gdzie skrypt ma zapisywać pliki rrd z perfdata do rysowania wykresów. U mnie, prosto do katalogu nagiosgrapha.

    Nie wiem, dlaczego inne pluginy nie monitorują liczby ppsów, przecież np. w ten sposób da się wykryć na interfejsie ddos, albo inną anomalię ruchu. A tutaj tylko jeden skrypt to robi, i na dodatek lekko bez sensu.

    Oczywiście mój wrapper będzie pewnie niewydajny w przypadku wykonywania wielu checków – pytanie jak bardzo niewydajny i kiedy zabija hosta.


  10. Jak zresetować usb spod konsoli

    Styczeń 5, 2011 by 0verlord

    Przywiesił mi się dysk na usb wpięty z hosta, do którego jest dość ciężko dotrzeć fizycznie. Dało się z konsoli.

    USB 2.0

    modprobe -vr ehci_hcd
    modprobe -v ehci_hcd
    

    dla USB 1.0

    modprobe -vr uhci_hcd
    modprobe -v uhci_hcd
    

    Oczywiście jeżeli mamy usb w modułach. Jeżeli nie – to rozwiązanie nie zadziała. Generalnie z rozwiązaniem idzie ten post, albo ten post.
    Kompilujemy kod, odpalamy i resetujemy co tam trzeba podając port.