NetBSD

    Jak d?ugo serwer by? niedost?pny?

    Po dzisiejszej wichurze, która spowodowa?a wy??czenie pr?du w nocy, chcia?em si? dowiedzie? jak d?ugo go nie by?o. Nie jest to takie trudne je?eli w domu ma si? serwer chodz?cy 24h na dob? i oprócz mierzenia uptime’u monitorujemy tak?e downtime. O paczce downtime przy okazji dodania jej do pkgsr-wip pisa?em jaki? czas temu.

    Pierwsze co nam b?dzie potrzebne to zainstalowanie paczki downtimed – http://dist.epipe.com/downtimed/. U?ywaj?c pkgsrc paczka jest w wip/downtimed.

    Po wydaniu polecenia downtimes dostajemy list? przerw w dzia?aniu serwera:

    crash 2015-04-01 00:48:28 -> up 2015-04-01 02:22:27 =    01:33:59 (5639 s)

    Do tego czasu w moim przypadku nale?y doda? 27 minut poniewa? tyle mi UPS podtrzymuje ca?? szafk? teletechniczn? ze switchem serwerem i innymi urz?dzeniami.

    A teraz pobawmy si? bardziej danymi z downtimed. Za pomoc? jednego zgrabnego „one-line’ra” mo?emy przeliczy? jak d?ugo nasz serwer „le?a?”.

    downtimes | awk {'print $10'} | sed 's/^.//' | paste -sd+ - | bc | awk '{print $1/60}' | awk '{print $1/60}' | awk '{print $1/24}'

    Robimy co nast?puje powy?szym poleceniem:

    1. Wywo?ujemy downtimes produkuj?c kolumn? z odnotowanymi przerwami
    2. Wynik przekazujemy do awk, które pokazuje nam tylko 10 pole (pola liczymy co spacj?) – czyli liczb? sekund ile trwa?o wy??cznie serwera
    3. Kolumn? z sekundami (i pocz?tkowym nawiasem) przekazujemy do sed’a przy pomocy, którego kasujemy nawiaz z pierwszego znaku. ?ci?lej rzecz ujmuj? zamieniamy pierwszy znak w ka?dej linijce na nic, ostatecznie dostajemy kolumn? sekund
    4. Kolumn? z sekundami przekazujemy do polecenia paste z parametrem -sd+ co powoduje sklejenie kolumny w jeden string oddzielony znakami + (znak „-” za -sd+ jest wymagany przy u?ywaniu BSD paste, przy GNU paste mo?na bez -)
    5. Gotowy string który ma posta? ci?gu sekund oddzielonego plusami przekazujemy do kalkulatora bc, który wykona dodawani.
    6. Otrzyman? sum? liczby sekund dzielimy przy pomocy awk przez 60 otrzymuj?c minuty
    7. Otrzymane minuty ponownie dzielimy przez 60 otrzymuj?c godziny.
    8. Na koniec wynik w minutach dzielimy przez 24 otrzymuj?c ilo?? dni , kiedy serwer by? niedost?pny.

    Powy?sze polecenie na moim domowym serwerze daje wynik 7.74633 dnia, czyli ponad 7,5 dnia.

    W?ó?my ten wynik w jaki? kontekst, aby si? przekona? czy to dobry wynik czy nie. Akurat przeciwie?stwem downtimed jest uptimed (surprise, surpise!) , który mierzy czas dzia?ania serwera i kilka innych ciekawych rzeczy jak rekordowe uptime’y oraz jaki by? w tym momencie zainstalowany system, a tak?e sumaryczn? ilo?? dni ile dzia?a? serwer. Przy okazji mo?emy sprawdzi? czy nasze obliczenia przy pomocy downtimed sprawdz? si?.

    Na dzie? dzisiejszy uprecords (komenda do wywo?ania statystyk) u mnie wygl?da tak:

    dom# uprecords
    #               Uptime | System                                     Boot up
    ----------------------------+---------------------------------------------------
    1   102 days, 14:03:21 | NetBSD 6.1.4_PATCH        Tue Jul  8 16:37:50 2014
    2    81 days, 05:59:55 | NetBSD 6.1.4_PATCH        Fri Apr 18 10:33:21 2014
    3    80 days, 01:40:20 | NetBSD 6.1.5_PATCH        Sat Jan 10 22:07:27 2015
    4    68 days, 12:05:30 | NetBSD 6.1.0_PATCH        Mon Sep  9 21:51:38 2013
    5    44 days, 23:30:13 | NetBSD 6.1.5_PATCH        Wed Nov 26 19:51:24 2014
    6    44 days, 07:09:29 | NetBSD 6.1.0_PATCH        Sat Dec  7 11:02:04 2013
    7    41 days, 14:10:24 | NetBSD 6.1.0_PATCH        Fri Jan 31 22:46:29 2014
    8    38 days, 16:54:02 | NetBSD 6.0.0_PATCH        Sun Nov 25 23:59:36 2012
    9    37 days, 20:55:24 | NetBSD 6.0.0_PATCH        Sat Jan 12 12:13:53 2013
    10    37 days, 14:33:08 | NetBSD 6.1.0_PATCH        Fri Jun 21 23:19:00 2013
    ----------------------------+---------------------------------------------------
    ->  23     6 days, 11:12:42 | NetBSD 6.1.5_PATCH        Wed Apr  1 02:27:59 2015
    ----------------------------+---------------------------------------------------
    1up in     2 days, 21:08:28 | at                        Fri Apr 10 10:49:08 2015
    t10 in    31 days, 03:20:27 | at                        Fri May  8 17:01:07 2015
    no1 in    96 days, 02:50:40 | at                        Sun Jul 12 16:31:20 2015
    up   876 days, 17:53:56 | since                     Sun Nov  4 00:02:44 2012
    down     7 days, 18:44:01 | since                     Sun Nov  4 00:02:44 2012
    %up               99.120 | since                     Sun Nov  4 00:02:44 2012

    Wg uptimed serwer na ponad 876 dni by? nieosi?galny przez 7 dni i prawie 19 godzin, co stanowi SLA na poziomie 99.12% :) Ca?kiem nie?le jak na domowy serwer!

    Sprawd?my jeszcze czy wyniki downtimed i uptimed nie ró?ni? si? zbytnio, czyli czy 7 dni 18 godzin i 44 minuty to mniej wi?cej 7.74633. Ponownie przy pomocy bc konwertujemy tym razem godziny do systemu dzisi?tnego.

    dom# echo "scale=5; 44/60" | bc
    .73333
    dom# echo .73333+7 | bc
    7.73333

    Ca?kiem blisko, ale jak blisko? :) Poraz trzeci u?yjmy bc aby policzy? procentow? ró?nic? mi?dzy tymi warto?ciami:

    dom# bc
    scale=5
    7.74633-7.73333
    .01300
    7.74633+7.73333/2
    11.61299
    .01300/11.61299*100
    .11100

    Ró?nica 0.11% czyli w zasadzie pomijalna. Za to zabawa w konsoli przednia :)

     

     

    © odwiedź stronÄ™ http://maciejewski.org po wiÄ™cej fajnych postów!

    Ogólne

    NetBSD w OVH na dedykowanym serwerze

    OVH oferuje dedykowane serwery w przyst?pnych cenach, zw?aszcza z linii kimsufi. Przy okazji posiada ich tyle, ?e swego czasu zablokowali mo?liwo?? kupowania nowych, poniewa? klienci starszych maszyn nie przed?u?ali umów, tylko kupowali nowe maszyny za ni?sz? cen? i z lepszymi parametrami.

    Nasta? czas migracji jednej maszyny (Pentium III Xeon) z 2010 roku na now? (Core 2 Duo). I tu zaczynaj? si? problemy, poniewa? w roku 2010 w OVH by?o co? takiego jak vKVM, czyli pod??czone zasoby fizycznego serwera poprzez Qemu, z mo?liwo?ci? u?ycia dowolnego ISO i instalacji czego dusza zapragnie. Pomny takich mo?liwo?ci, nowy serwer zosta? zakupiony i przesiadka ze starego z funkcjonuj?cym NetBSD i kilkoma us?ugami wydawa? si? banalna. Niestety OVH jaki? czas temu nie mówi?c nic nikomu zrezygnowa?a z vKVMa daj?c do dyspozycji do?? szeroki wachlarz dystrybucji, niestety bez NetBSD.

    ovh1

    Musz? tu z uznaniem zauwa?y?, ?e od 2011 roku nie musia?em wchodzi? do panelu zarz?dzaj?cego, poniewa? system osi?gn?? imponuj?cy uptime 1012 dni po czym pad? mu zasilacz i musia? zosta? wymieniony, trac?c ca?y uptime :)

         #               Uptime | System                                     Boot up
    ----------------------------+---------------------------------------------------
         1   1012 days, 07:06:5 | NetBSD 5.99.37            Thu Jul 21 08:36:46 2011
         2   216 days, 23:27:49 | NetBSD 5.99.37            Wed Dec  8 12:34:48 2010
         3    64 days, 16:47:53 | NetBSD 5.99.37            Sun Aug 15 20:59:35 2010
         4    30 days, 02:34:48 | NetBSD 5.99.37            Mon Nov  8 09:59:07 2010
         5    19 days, 20:31:45 | NetBSD 5.99.37            Tue Oct 19 14:18:21 2010
         6     7 days, 15:07:02 | NetBSD 5.99.37            Wed Jul 13 17:28:44 2011
         7     4 days, 05:54:32 | NetBSD 5.99.37            Wed Aug 11 14:31:49 2010
    ->   8     0 days, 00:03:21 | NetBSD 5.99.37            Tue Apr 29 09:02:03 2014
    ----------------------------+---------------------------------------------------
    1up in     4 days, 05:51:12 | at                        Sat May  3 14:56:35 2014
    no1 in   1012 days, 07:03:3 | at                        Sat Feb  4 15:08:55 2017
        up   1355 days, 19:34:0 | since                     Wed Aug 11 14:31:49 2010
      down     0 days, 22:59:33 | since                     Wed Aug 11 14:31:49 2010
       %up               99.929 | since                     Wed Aug 11 14:31:49 2010

    Wymiana zasilacza

    Oczywi?cie takie standardy jak Apache, MySQL, Postfix, Dovecot, BIND itp. mo?na przenie?? na dowoln? instalacj?, ale jest zasadnicza ró?nica mi?dzy przeniesieniem configów (dzi?ki bardzo pouk?adanemu filesystemowi NetBSD) a przeniesieniem i poprawieniem ka?dej jednej ?cie?ki. Dodatkowo czas goni? bo pierwszego maja stary serwer mia? zosta? wy??czony.

    Szcz??liwie OVH w razie padu systemu daje mo?liwo?? uruchomienia go w trybie rescue. Jest to tryb w którym system bootuje si? z sieci, na maila dostajemy tymczasowe has?o roota, a wszystkie slice’y/partycje mo?emy sobie podmontowa? i sprawdzi? co tam nie gra, wzgl?dnie przenie?? gdzie? dane i zaora? stary system nowym z listy.

    System rescue jest wystarczaj?cy do zainstalowania jakiegokolwiek innego systemu z ISO wg. w?asnych potrzeb. W przypadku *BSD mamy w?a?ciwie dwa sposoby. Pierwszy to odpalenie rescue w trybie freebsd (musi by? zainstalowany najpierw jaki? FreeBSD z listy). W tym trybie dostajemy dost?p do partycji na obydwóch dyskach fizycznych z obs?ug? FFS2. Po za?o?eniu partycji FFS i rozpakowaniu setów z ISO NetBSD (mo?na u?y? drugi dysk jako tymczasowe miejsce na ?ci?gni?cie setów, poniewa? rescu jest w trybie do odczytu tylko), w?a?ciwie mamy dzia?aj?cy system. Pozostaje kwestia bootloadera, którego z FreeBSD nie zainsytlujemy. FreeBSD nie ma binarnej kompatybilno?ci z NetBSD (w drug? stron? taka kompatybilno?? istnieje).

    Niesprawdzony sposób to zrzucenie z innego NetBSD pierwszych 446 bajtów z bootowalnego dysku.

    dd if=/dev/wd0d of=/tmp/netbsd_boot.dump bs=446 count=1

    Dlaczego 446? Dlatego, ?e po wgraniu na inny dysk b?dzie tam tylko kod rozruchowy. Zrzucenie 512 bajtów zrzuca ca?y disklabel, który kiedy nie jest identyczny spowoduje sieczk? na dysku.

    dd if=/tmp/netbsd_boot.dump of=/dev/ada0s1 bs=446 count=1

    To powinno po restarcie poprawnie wybootowa? NetBSD z pierwszego dysku . Oczywi?cie trzeba pobawi? si? w „?lep? in?ynieri?” aby wykry? wszystkie urz?dzenia, nazwy interfejsów sieciowych i po ponownym wybootowaniu w trybie rescue, odpowiednio wyedytowa? pliki konfiguracyjne. Ja u?ywa?em do tego prostych skryptów uruchamianych z rc.local lub z crona po wybootowaniu i wpisuj?cych wynik do pliku, np:

    @reboot         dmesg >> /root/dmesg.txt

    Drugim sposobem jest instalacja z ISO przy pomocy Qemu. W tym celu uruchamiamy rescue linuksowe. Jest to jakis zmodyfikowany Debian. Je?eli dysponujemy ilo?ci? RAM oko?o 4GB mo?emy sobie system przerzuci? do RAMu i dodatkowo mie? ISO w RAM.

    mount -t tmpfs -o size=4000m tmpfs /mnt
    mkdir /mnt/var
     mkdir /mnt/var/cache
     mkdir /mnt/var/lib
     mkdir /mnt/var/run
     mkdir /mnt/usr
     mkdir /mnt/lib
    rsync -a /var/cache/ /mnt/var/cache/
     rsync -a /var/lib/ /mnt/var/lib/
     rsync -a /var/run/ /mnt/var/run/
     rsync -a /usr/ /mnt/usr/
     rsync -a /lib/ /mnt/lib/

    rsync chwil? potrwa.

    mount -B /mnt/var/cache /var/cache
     mount -B /mnt/var/lib /var/lib
     mount -B /mnt/var/run /var/run
     mount -B /mnt/usr /usr

    Voila! Mamy Linuxa w ramie w trybie RW.

    ?ci?gamy teraz najnowsze dost?pne ISO gdzie? do /mnt

    cd /mnt && ftp -a ftp://ftp.fr.netbsd.org/pub/NetBSD/iso/6.1.4/NetBSD-6.1.4-amd64.iso
     (albo wget ftp://ftp.fr.netbsd.org/pub/NetBSD/iso/6.1.4/NetBSD-6.1.4-amd64.iso)

    Potrzebujemy jeszcze Qemu

    apt-get update
     apt-get install qemu

    Fajne jest to ?e OVH ma swój mirror repozytorium Debiana wi?c idzie to szybko. Dodatkowo serwer ftp NetBSD we francji chyba tak?e jest w OVH :)

    2014-04-29 19:55:36 (10.8 MB/s) – `NetBSD-6.1.4-amd64.iso’ saved [347023360]

    Przygotowania sko?czone, uruchamiamy Qemu ze ?ci?gni?tym ISO i dyskiem fizycznym jako pierwszy dysk twardy:

    qemu-system-x86_64 -net nic -net user -m 1G -alt-grab -localtime  -k en-us -cdrom \
     /mnt/NetBSD-6.1.4-amd64.iso -hda /dev/sda  -vnc :0

    Je?eli nie dostaniemy ?adnych b??dów w konsoli, znaczy si?, ?e dzia?a i mo?emy si? zalogowa? na nasz IP w OVH przez VNC. Je?eli instalujemy system 32 bitowy zamiast qemu-system-x86_64 uruchamiamy po prostu qemu.

    NetBSD bootuje si? w OVH

    Instalacja NetBSD przez VNC

    Nale?y przeprowadzi? standardow? instalacj?, i wst?pnie skonfigurowa? system do dzia?ania. Mo?na np. spróbowa? skonfigurowa? wszystkie podstawowe karty sieciowe (wm,bge0,fxp0,re0 itp.), je?eli trafimy w t? w?a?ciw? to po restarcie z dysku NetBSD powinien zacz?? odpowiada? na ping. Oczywi?cie trzeba otworzy? ssh, doda? u?ytkownika albo pozwoli? rootowi si? logowa?. Mi uda?o si? dosta? do systemu za drugim podej?ciem. Pierwszy raz zrobi?em literówk? w bramie :) Ustawienia sieciowe oczywi?cie bierzemy z systemu rescue, s? identyczne z normalnym systemem. W przypadku dro?szych serwerów mo?e by? jeszcze potrzeba zmiany w fstabie z emulowanego wd0 na rzeczywisty sd0. W moim przypadku, jako ?e serwer posiada dyski SATA, zarówno w Qemu jak i fizycznym NetBSD dyski widnia?y jako wd0.

    No i to tyle. Powy?szy sposób z Qemu mo?e by? stosowany do ka?dego ISO, np. Windows Server czy dowolnej dystrybucji Linuksa. Do Windows 7 lub 2008 trzeba doinstalowa? jeszcze kvm (apt-get install kvm)

    Przy okazji na koniec ma?a dygresja, o tym jak szybko rynek reaguje na takie zmiany i braki jak zrezygnowanie z vKVM. Szukaj?c informacji i materia?ów odno?cie tego zagadnienia natrafi?em na kilka stron które w przedziale 20$-35$ oferuj? instalacj? dowolnego lub z innej listy systemu operacyjnego – g?ównie Windows. Przyk?ady:

    http://winstaller.org/

    https://www.pozzo-balbi.com/products/custom-installation.

    A u mnie macie za darmo i po polsku ;)

    Podzi?kowania dla morr’a za pomoc przy pierwszych próbach z instalacj? bez Qemu :)

    BONUS: porównanie dmesga z maszyny w Qemu i fizycznego serwera po instalacji – http://maciejewski.org/temp/dmes_ovh_qemu_i_bm.txt

    In English

    Kill It! (UNIX way)

    I’ve got heavy load on one box. What is strange it operate normally, despite this load:

    load averages: 153.11, 152.41, 150.74
    866 processes: 150 runnable, 712 sleeping, 4 on CPU

    This ~720 processes ware snmpd in some strange loop of checking if snmpd is working.

    I can’t kill it globally witk pkill , but kill -9 PID works. I don’t want to manually type 720 pids and don’t want to restart machine, so here comes unix way to kill 720 processess:

    ps uax | grep snmpd | awk '{print $2}' | xargs kill -9

    Results?

    load averages: 0.04, 10.8, 59.5
    98 processes: 95 sleeping, 3 on CPU

    Back to normal state!

    Mondays… ;)

    © odwiedź stronÄ™ http://maciejewski.org po wiÄ™cej fajnych postów!

    Job / Praca

    Hylafax i wiele modemów oraz ró?ni odbiorcy.

    Mój system faksowy rozrasta si?, aktualnie obs?uguje 5 numerów a w planach s? kolejne dwa. Jak na razie w dwa miesi?ce odebra? ponad 1500 faksów i dzia?a bez zarzutu.

    Dok?adaj?c modemy oczywi?cie modyfikacji uleg? plik z konfiguracjami FaxDispatch i skrypty konstruuj?ce maile z faksami w formacie png.

    Skrypt z tego wpisu teraz jest w osobnych plikach, ka?dy dla innego numeru. Ka?dy z tych skryptów wykorzystuje te? osobny katalog tymczasowy (/tmp/faxX) aby w przypadku odbierania faksów jednocze?nie pliki z obrazkami nie pomiesza?y si?, lub nie zosta?y nadpisane. Eksportowanie zmiennych $SENDER i $FILE jest tak?e uzupe?nione o kolejny numer aby nie by?o niejasno?ci i b??dów w dostarczeniu.

    Teraz najciekawsza zmiana – instrukcja CASE w pliku FaxDispatch.
    FILETYPE=pdf;
    SENDTO=fax_pdf@***.pl;
    TEMPLATE=pl;
    case "$DEVICE" in
    tty00)  echo $FILE > /tmp/FILE; echo $SENDER > /tmp/SENDER; /tmp/convertmime.sh;         SENDTO=fax_pdf@***.pl;;
    ttyU0)  echo $FILE > /tmp/FILE2; echo $SENDER > /tmp/SENDER2; /tmp/convertmime2.sh;      SENDTO=;;
    ttyU1)  echo $FILE > /tmp/FILE3; echo $SENDER > /tmp/SENDER3; /tmp/convertmime3.sh;      SENDTO=;;
    ttyU2)  echo $FILE > /tmp/FILE4; echo $SENDER > /tmp/SENDER4; /tmp/convertmime4.sh;      SENDTO=;;
    ttyU3)  echo $FILE > /tmp/FILE5; echo $SENDER > /tmp/SENDER5; /tmp/convertmime5.sh;      SENDTO=;;
    esac

    Pierwsze 3 linijki to standardowa konfiguracja je?li nie zachodzi ?aden CASE, co w?a?ciwie nie powinno si? zdarzy?, ale w razie jakby co (np nieoczekiwana zmiana nazwy portu) fax zostanie dostarczony na mail fax_pdf@**.pl jako pdf.

    Nast?pnie CASE dzia?aj?cy na zmiennej $DEVICE, która odpowiada portowi RS232 w NetBSD. Ka?dy CASE wyrzuca nazwe pliku oraz nadawce do w?a?ciwego pliku, z którego pó?niej korzysta convertmimeX.sh do skonstruowania maila. Dodatkowo modem na tty00 oprócz dostarczenia faksu w formie obrazka wysy?a ten sam faks w formacie pdf.

    System dzia?a bardzo stabilnie, du?e znaczenie ma zapewne jako?? modemów oraz u?ytych przej?ciówek USB-RS232. W moim przypadku kable USB wpi?te obok siebie, blokowa?y losowo który? modem. Kiedy wpi?te s? co drugi port USB wolny – wszystko dzia?a bez zak?óce?.

    Na razie pó?ka modemowa wygl?da jak na zdj?ciu poni?ej, ale kiedy dojd? dodatkowe dwa modemy trzeba b?dzie pomy?le? o ?adniejszej organizacji :)

    © odwiedź stronÄ™ http://maciejewski.org po wiÄ™cej fajnych postów!

    Job / Praca

    Administrowanie mo?e by? ?adne i wygodne!

    Szukaj?c alternatywy dla SNORT + BASE natrafi?em na SNORBY. Snorby to tak samo jak Base frontend dla Snorta, z tym, ?e napisany w rubym i jest po prostu ?adny. Wszystko si? kr?ci, przyciemnia, przelatuje z jedno w drugie, dodatkowo ma kilka fajnych funkcji jak generowanie raportów pdf czy wysy?anie powiadomie? mailem.

    Co mnie szczególnie zaskoczy?o to instalacja, faktycznie (przynajmniej na NetBSD) przebieg?a tak jak jest pokazana w kilku krokach na stronie Snorbyego. Klonujemy najnowsz? wersj? przy pomocy gita, edytujemy podstawowe informacje i dost?p do bazy MySQL, uruchamiamy server na porcie 3000 – gotowe :)

    Oczywi?cie trzeba dosintalowa? bardzo du?o sk?adników samego rubiego (to si? chyba naywa „gems” ? – nigdy nie mia?em do czynienia z rubym :), cz??? znajduje si? w pkgsrc, cz??? ruby sam doinstaluje przez wydanie komendy „bundle install”. w katalogu ze snorbym.

    Jedyna rzecz, któr? musia?em poprawi? r?cznie to zrobi? dowi?zanie z /usr/pkg/bin/ruby193 do /usr/pkg/bin/ruby poniewa? bez tego snorby mówi? ?e nie wie gdzie jest ruby i nie móg? odpali? „workera”, który co jaki? czas zbiera informacj? z bazy i aktualizuje dashboard.

    Co do snorta, to konfiguracja ??cz?ca go ze snorbym jest banalnie prosta. Trzeba tylko doda? w konfigu, aby oprócz zapisywania do pliku lub bazy danych, zapisywa? te? do bazy snorbiego :) To wszystko.

    Po chwili w zale?no?ci jakie regu?y mamy zainstalowane i co snort na?apie, wszystko powinno by? ?adnie odwzorowane w snorbym, gdzie ju? mo?na wygodnie sobie przeglada? raporty, zerka? do ?rodka ramek, sprawdza? czy jaki? host nie za bardzo nam bru?dzi itp.

    Porównuj?c czyst? instalacj? snorta i logowanie do plików a wizualizacj? przy pomocy Snorbiego w?a?ciwie nie ma co porównywa? :)

    Internet

    Ju? nie taki brzydki hack na hylafax i png

    W poprzednim wpisie – http://maciejewski.org/2012/05/16/hack-na-hylafax-i-faksy-w-png-lub-innym/ opisa?em jak przerabia? tiffy generowane przez hylafax na png i wysy?a? je ludziom na mail.

    Skrypt w FaxDispatch co prawda dzia?a? bardzo dobrze ale by? do?? brzydki i toporny (tworzenie headerów przez echo >> do plików itp).

    Pozatym okaza?o si? ?e mia? jedn? zasadnicz? wad?. Nie da?o si? przekaza? wiadomo?ci z za??cznikami inline. Po naci?ni?ciu FORWARD wiadomo?? wygl?da?a mniej wi?cej tak:

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Dlatego zrezygnowa?em z sendmaila i uuencode na rzecz mime-construct

    Poprzedni skrypt wygl?da teraz tak:

    convert /var/spool/hylafax/`cat /tmp/FILE` /tmp/fax/fax.png
    for D in /tmp/fax/*png
    do
    echo -n "--file-attach " >> /tmp/fax/faxy
    echo $D >> /tmp/fax/faxy
    done
    mime-construct --header 'From: Serwer faxów ' --to fax@***.pl --subject "Odebrano fax od $SENDER" `cat /tmp/fax/faxy`
    rm -rf /tmp/fax/*

    Teraz p?tla for tworzy list? plików które mime-construct ma za??czy? do wiadomo?ci.

    Po zmianie skryptu dostarczanie faksów dzia?a jak dotychczas, natomiast po przekazaniu mamy eleganckie za??czniki tam gdzie powinny by? :)

     

    Job / Praca

    Hack na hylafax i faksy w png (lub innym formacie graficznym)

    Na pocz?tku by?a euforia. B?dziemy mieli firmowy wirtualny faks z pi?cioma numerami! Notabene „paczk?” dziesi?ciu kolejnych numerów od Netii dostali?my za darmo, a my?la?em, ?e za darmo nikt ju? nic nie daje. Zatem, serwer faksów stan?? na nogi do?? szybko i co równie? wa?ne, pierwszy numer uda?o si? uruchomi? bez wi?kszych problemów. Serwer to hylafax 4.4.7.

    $ faxstat
    HylaFAX scheduler on nidhog.***.pl: Running
    Modem tty00 (+48616******): Running and idle

    Po pocz?tkowym (moim) zachwycie jak to dobrze dzia?a i jak stabilnie, zacz??y nap?ywa? pytania i pro?by o zmian? formatu dostarczania faksów. Tutaj ma?e wtr?cenie jak wygl?da u nas dostarczanie faksów. Na jeden numer do ksi?gowo?ci kontrahenci wysy?aj? faks, który nast?pnie jest dystrybuowany do wszystkich osób którym mo?e by? to przydatne. Te kilkadziesi?t osób patrzy sobie w swoje Thunderbirdy a niektóre wybitnie oporne jednostki w Outlooki i im szybciej po ?ypni?ciu okiem mo?na stwierdzi?, ?e ten faks jest potrzebny lub nie tym lepiej.

    I tu w?a?nie zaczynaj? si? schody bowiem hylafax po odebraniu faksu umie go dostarczy? jako postscript (domy?lnie) lub wielostronicowy tiff lub pdf. Niby mamy wszystko co potrzeba, orygina?, obrazek, pdf. Niestety problem tkwi poniek?d w klientach pocztowych, które bez zag??biania si? w szczegó?y nie mog? wy?wietli? podgl?du za??cznika w pdf lub tiff.

    Domy?lnie hylafax nie ma tak?e opcji dla png, jpg czy gif poniewa? w/g twórców hylafax’a formaty te nie nadaj? si? do odwzorowywania czarno-bia?ych faksów oraz maj? problem z wielostronicowymi faksami.

    Po kilkudniowych (naprawd?) poszukiwaniach jakich? pluginów i patchy okaza?o si?, ?e s? co prawda jakie? patche na /var/spool/hylafax/bin/faxrcvd , który jest odpowiedzialny za przyjmowanie faksów istniej? na forum hylafax ale posty s? datowane mi?dzy 1999 a 2004 i teraz ten plik wygl?da zupe?nie inaczej. Oczywi?cie przy ka?dym po?cie akademicka dyskusja dlaczego nie u?ywa? png czy jpg…

    Jak ju? pisa?em, w modelu odbioru faksów, który u nas z powodzeniem funkcjonuje liczy si? szybko?? – dostajemy kilkana?cie/kilkadziesi?t faksów dziennie, który to faks mo?e dotyczy? jednej lub kilku osób z kiludziesi?ciu. Musi by? obrazek dost?pny w podgl?dzie dla programów pocztowych, koniec, kropka.

    Zamiast próbowa? zaimplementowa? obs?ug? png do faxrcvd, który dla mnie jest zbyt pokr?cony, poszed?em inn? drog?. Hylafax u?ywa pliku /var/spool/hylafax/etc/FaxDispatch do dostosowywania dostarczania faksów. Mo?na tam oprócz predefiniowanych pól dokonywa? modyfikacji np przy pomocy CASE (gdy numer taki, dostarcz gdzie?) itp. Mi natomiast rzuci? si? w oczy przedostatni przyk?ad z jakiego? FaxDispatcha w cvsie hylafaxa:

    ## To make each received fax saved outside hylafax
    ## ( Don't forget to chown uucp /some/place )

    /bin/cp $FILE /some/place

    Czysty skrypt shellowy w pliku konfiguracyjnym :)

    Po kilkunastu wys?anych faksach testowych i poprawieniu kilku b??dów oraz praw urodzi?o si? co? takiego:

    FILETYPE=pdf;
    SENDTO=fax@***.pl;
    TEMPLATE=pl;

    convert $FILE /tmp/fax/fax.png
    echo "To: fax@***.pl" > /tmp/fax/mail_fax
    echo "From: Serwer fax??w *** Sp. z o.o. " >> /tmp/fax/mail_fax
    echo "Subject: Odebrano fax od $SENDER" >> /tmp/fax/mail_fax
    echo "MIME-Version: 1.0" >> /tmp/fax/mail_fax
    echo "Content-Type: text" >> /tmp/fax/mail_fax
    echo "Content-Disposition: inline" >> /tmp/fax/mail_fax
    for D in /tmp/fax/*png
    do
    uuencode $D $D >> /tmp/zalaczniki
    done
    cat /tmp/zalaczniki >> /tmp/fax/mail_fax
    sendmail "fax@***.pl" < /tmp/fax/mail_fax rm -rf /tmp/fax/* rm -rf /tmp/zalaczniki

    Do dzia?ania potrzebny jest ImageMagic.

    Krótkie obja?nienie

    - pierwsze trzy linijki to najbardziej podstawowa konfiguracja, odbiorca, format i szablon wiadomo?ci. Zostawi?em podczas testowania jak przychodzi? faks aby przez wadliwy skrypt poni?ej nie zosta? pozbawionym faksów :)

    - nast?pnie konwertujemy plik tiff który tworzy hylafax w /var/spool/hylafax/recvq na png. Konkretny plik hylafax przechowuje w zmiennej $FILE wi?c nie musimy nawet szuka? tego o którego nam chodzi. Wielostronicowy tiff konwertowany jest na wiele plików png w/g schematu - je?li dajemy nazw? fax.png jako pliku wyj?ciowego dostajemy fax-1.png, fax-2.png itd.

    - kolejne 6 linijek tworzy nag?ówek maila, bez tego te? zadzia?a, ale odbiorca dostanie fax bez tematu od UNIX-to-UNIX Copy (uucp@domena), za?o?? si?, ?e to si? nie spodoba ludziom z poza IT :) Mamy zatem ?adnie od kogo dla kogo, z numerem telefonu który do nas wysy?a? w temacie.

    - nast?pne 4 linijki to p?tla dzia?aj?ca na katalogu gdzie s? nasze skonwertowane pliki png. Ka?dy plik png trzeba zakodowa? do ascii i doklei? do wcze?niej stworzonego pliku z nag?ówkiem.

    - ostatecznie wysy?amy mail sendmailem do??czaj?c nag?ówki i za??czniki z pliku.

    - ostatnie dwie linijki - sprz?tamy oczekuj?c nast?pnego faksu :)

    Trzeba pami?ta?, aby wszystkie polecenia i katalogi u?yte w tym skrypcie mog?y by? wykonane przez u?ytkownika uucp.

    Je?li wszystko gra, adresat maila powinien otrzyma? mniej wi?cej tak? wiadomo??:

    NetBSD

    wip/downtimed

    Po wip/digitemp dzisiaj doda?em drug? paczk? do wip’a. Downtimed ?ledzi czasy uruchomienia, rebootów, zawiesze?, braku pr?dów itp i prowadzi statystyki jak d?ugo system by? offline. Co ciekawe, planowe restarty (przynajmniej w przypadku mojego serwera) trwaj? dok?adnie tyle samo – 66 sekund (reboot) przy czym „shutdown -r now” jest o 3 sekundy szybszy (63 sek) ni? reboot :)

    Przyk?adowe statystyki wygl?daj? tak:

    $ downtimes
    down 2012-02-28 14:57:17 -> up 2012-02-28 14:58:23 = 00:01:06 (66 s)
    down 2012-02-28 15:05:12 -> up 2012-02-28 15:06:18 = 00:01:06 (66 s)
    down 2012-02-28 15:07:25 -> up 2012-02-28 15:08:28 = 00:01:03 (63 s)

    © odwiedź stronÄ™ http://maciejewski.org po wiÄ™cej fajnych postów!

    Job / Praca

    tmux FTW!

    W codziennej pracy Administratora, logowanie na wiele maszyn i przeprowadzanie update’ów, przegl?dów, testów, audytów to niemal codzienno??. Przy paru maszynach nie jest to takie problematyczne, przy kilku albo kilkunastu – codzienne logowanie mo?e by? ju? powoli frustruj?ce. Z pomoc? przychodzi tmux czyli terminal multiplexer. Tmux to co? takiego jak screen, tylko lepszy :) Potrafi oprócz wielu sesji w jednym oknie które mo?na prze??cza?, tak?e dzieli? okno na panele horyzontalnie i wertykalnie czyli dla osób które wytkn? mi zaraz „polglisz” pionowo i poziomo. Wszystkie polecenia mo?na poda? jako parametr dlatego jedn? komend? mo?emy sobie przygotowa? ca?e ?rodowisko. Dla moich potrzeb – czyli logowanie si? na bramki VPNowe w ilo?ci 6 najlepszym rozwi?zaniem jest siatk? 3 wiersze na 2 kolumny. Dodatkowo po odpowiednim podzieleniu okna, nast?puje automatyczne logowanie przez ssh do odpowiednich maszyn dzi?ki kluczom bez has?a. Efekt ma by? taki, ?e jedna komenda przygotowuje 6 maszyn do pracy zdalnej :)

    Jedziemy:

    tmux new-session -d 'ssh cancer@10.1.2.6' \; split-window -d 'ssh cancer@10.1.3.6'\; split-window -d 'ssh cancer@10.1.4.6'\; split-window -h 'ssh cancer@10.1.5.6'\; select-pane -t 2\; split-window -h 'ssh cancer@10.1.6.6'\; select-pane -t 4\; split-window -h\; attach

    Krótkie wyja?nienie:

    new-session -d 'ssh cancer@10.1.2.6′ – tworzy now? sesj? (okno g?ówne i wywo?uje komend? systemow? w ”) -d powoduje od??czenie wszystkich klientów je?li byli pod??czeni.
    split-window – dzieli okno, domy?lnie w poziomie
    select-pane -t n – wybiera okno (licz?c od zera i od lewej do prawej)
    attach do??cza do ca?ej sesji.

    Efekt:

    Teraz ju? mo?na od razu dzia?a?, nie trac?c czasu na logowanie si? do wszystkich maszyn oddzielnie :)

    © odwiedź stronÄ™ http://maciejewski.org po wiÄ™cej fajnych postów!

    Job / Praca

    Zdalna konsola, instalacja NetBSD i kreatywne lenistwo

    Dzisiaj instalowa?em NetBSD na DELL’u Power Edge 2850 przez zdaln? konsol?. Po zamontowaniu go w szafie i w?o?eniu p?ytki wróci?em do biurka. Instalacja bardzo standardowa, jednak pojawi? si? problem podczas restartu. P?yta zosta?a w ?rodku i zamiast moja bootowa? moj? ?wierzynk?, serwer ca?y czas startowa? z instalacj?. No có?, najpro?ciej by?oby podej?? do szafy, wyci?gn?? p?yt? i ponownie go uruchomi?. No ale po co si? przem?cza?, zw?aszcza je?li obok stoi gor?ca kawa i  ?wie?e rogale ?wi?tomarci?skie. Za?atwmy to po UNIXowemu ! :)

    1. DRAC w pe?nej okaza?o?ci, serwer startuje (ju? jest po instalacji).

    Related Posts with Thumbnails

    © odwiedź stronÄ™ http://maciejewski.org po wiÄ™cej fajnych postów!

    Add your widget here