ObecnéNávody

Různé

Typické "tohle nechci zapomenout" místo :o)

(:toc:)

Icinga2 - Anag: Use API

Icinga2 from version 2.10 drop classicui. If we want to monitor Icinga2 from Android app Anag, we have to use Icinga2 API.

First enable api feature from console:

    icinga2 api setup

It does for us everything needed automatically.

Then look at new config file /etc/icinga2/conf.d/api-users.conf where you can modify username and password for api user.

Then you can allow the api to listen on IPv6 too. Add a parameter

    bind_host = "::"

into file /etc/icinga2/features-available/api.conf into ApiListener object section. It enables both IP versions 4 and 6 (not 6 only as would seem).

Check if everything works by curl command first:

    curl -k -s -u api_user:passw https://example.com/v1/objects/services

If it works, set up Anag: Create new instance:

Save it, test it, use it.

Comment: The reason why you are reading this is that Icinga2 doesn't use IPv6 by deffault (v2.10 October 2018) and Anag author gets not enough money for his work to write good documentatnion. Support him, please :)

Upgrade Debian Jessie -> Stretch

Poznámky a zrady. :) Samotný upgrade je hladký tak, že je to až podezřelé. Po prvním upgradoveném serveru jsem zjistil, že

  • smazal logy squida (při purge přechodového balíčku squid3) - viz níže.
  • odinstaloval aptitude a pár dalších menších balíčků

Jak postupovat

Přípravná palba přes backports:

  • v aptitude filtrovat balíčky backports = l ~A backports
  • postupně upgradovat, hlavně pomůže postgresl

Vlastní postup:

  • apt sources pro stretch přidat a nechat tam ještě i jessie
  • apt-get update / apt-get upgrade
  • apt-get install php (balíček se závislostí na aktuální verzi php tj 7.0). php5 ještě zůstává.
  • apt-get install python
  • apt-get install python3 - to zaručí, že aptitude nebude odinstalován :)
  • apt-get dist-upgrade - zkontrolovat, co chce odinstalovat !!! a případně se posouvat vpřed ručně po balíčcích a zase zkusit dist-upgrade
  • apt-get autoremove
  • ls -lA / - zkontrolovat symlinky na linuxové jádro
  • reboot do nového systému
  • zkontrolovat stav balíčků v aptitude
  • ostratnit jessie sources pro apt
  • aptitude - zbavit se zastaralých balíčků
  • apt update / upgrade
  • reboot, hotovo

Squid

Vrací se zpátky k pojmenování balíčku "squid" místo "squid3". Zkontrolovat:

  • konfiguraci v /etc/squid
  • logy - přidá jen symlink suqid -> squid3. Když se udělá purge balíčku squid3, tak adresář /var/log/squid3 bez náhrady smaže. Před purge tedy symlink "squid" smazat a adresář squi3 přejmenovat na squid.
  • rotace logů

interfaces eth0 -> predictable

Sice máme nová pojmenování pro síťová zařízení, ale Debian v rámci upgradovatelnosti drží stará pojmenování.

  • Takže nejdříve to chce zjistit, jak se bude jmenovat to nové rozhraní:
    udevadm test-builtin net_id /sys/class/net/eth0 | grep '^ID_NET_NAME_SLOT'
  • pak ho změnit v interfaces
  • nakonec odstranit /etc/udev/rules.d/70-persistent-net.rules
  • networking restart
  • a pro jistotu restart serveru

grep pro filtrování komentářových a prázných řádků:

Pro výpis řádků z konfiguračního souboru plného komentářů používám toto:

    grep -v "^[\ ]*#" soubor | grep -v "^$"

nebo

    grep -E -v "^[\ ]*#|^$" soubor

Vypíše jen řádky, které nezačínají znakem # i kdyby před ním byly mezery. Druhý grep ještě vyhodí prázdné řádky. Věřím, že to jde dát do jednoho rozšířeného grepu, takže když mi někdo poradí, budu rád. Tohle mi u dlouhých konfiguráků ušetřilo hodně minut mého drahoceného života :)

ansible, scp SSH Error

Místo vykonání příkazu zahlásí:

    "msg": "ERROR! SSH Error: data could not be sent to the remote host.
                 Make sure this host can be reached over ssh"

Stroj při přihlášení vrací nějaký text (například u mě to bylo cat TODO) a to scp a potažmo ansible rozhodí.

Machine returns some text after connection (I had cat TODO) and scp/ansible is upset from this. :)

grep na filtrování kousků z logu

Například jen to=adresa v mail logu:

    grep -o "to=[a-z0-9.-]*\@[a-z0-9.-]*"

Firefox neukazuje v adrese celou url

about:config browser.urlbar.trimURLs -> false

eGroupware - kalendář, pomalé vkládání (calendar slow insert/update)

Po upgradu z egroupware-1.8 na egroupware-epl-14 zpomalilo vkládání nových záznamů do kalendáře. Příčinou je změna nastavení odesílání pošty. Verze 1.8 měla společné nastavení pro celý egroupware, verze epl-14 má nastavení účtu pro každého uživatele zvlášť. Po přidání události se tak poštovnímu serveru nepředává jeden mail s více adresami, ale tolik mailů, kolik je účastníků.

Je potřeba nastavit odesílání pošty přes Submission, aby se tak obešly případné antivirové a antispamové testy, které celý proces nesmírně prodlužují.

English, briefly: Culprit is e-mailing. Set SMTP in account settings to Submission. This bypasses virus and spam test which may very slow down the process. Version 1.8 had common setting for whole system - it resulted in trasfering one e-mail from egw to MTA. Version epl-14 has one setting for every user - it results in as many tansfers as the number of participant is. If every transfer waits for mail server, it may result in 10 seconds per one mail.

Samba: session setup failed: NT_STATUS_INTERNAL_DB_CORRUPTION

Nastalo po upgradu ze Squeeze na Wheezy na serveru s LDAP. V smb.conf nastavit

 ldapsam:trusted = no

nebo odstranit (no je default).

clamav-milter - MailScanner[13153]: p record handling: Loop condition found, aborting file.

Chybová hláška se objeví v mail.logu a doručování mailů se zastaví. Problém způsobuje direktiva AddHeader v souboru clamav-milter.conf. Nepoužívejte nastavení "replace", místo něj dejte "no". Přijdete o jakousi X-header ve vašich e-mailech, ale získáte funkční mail server :o)

Error message appears in mail.log and mail delivering stops. Problem is caused by AddHeader directive in clamav-milter.conf file. Do not use "replace" setting, instead use "no". You'll lose some X-header in your e-mails, bug you get functioning mail server :o)

grub: symbol grub_env_find not found

Entering rescue mode...

Tato hláška se objeví při startu počítače, místo toho, aby grub zobrazil menu. Řešení: Nabootovat z instalačního CD Debianu do rescue režimu, připojit /boot a spustit grub-install.

This message appears when computer starts instead grub to show its menu. Solve: Boot from Debian install CD into rescue mode, mount /boot and run grub-install.

RAID1 stručně

http://www.root.cz/diskuse/3379/230109/

Upgrade Wheezy -> Jessie opravdu stručně

Tudy prosím: Upgrade Wheezy na Jessie

Upgrade Squeeze -> Wheezy opravdu stručně

Tentokrát jsem z toho udělal samostatnou stránku. Takže tudy prosím: Upgrade Squeeze na Wheezy

Automatické nastavení proxy v Gnome

Zadání: Máme na serveru spoustu uživatelských účtů. Noví uživatelé potřebují na internet, ale nemají nastavenu proxy. Chci přidat nastavení proxy do skriptu, který přidávám nové uživatele do systému.

V Gnome se proxy nastavuje v menu Systém -> Volby -> Proxy sítě. Nastavení se uloží do dvou souborů:

 ~/.gconf/system/proxy/%gconf.xml
 ~/.gconf/system/http_proxy/%gconf.xml

Mělo by tedy stačit tyto dva soubory nakopírovat do příslušných adresářů všech uživatelů.

Změna: Objevil jsem program gcoftool, který tyto volby nastavuje:

 gconftool -s /system/proxy/mode auto --type string
 gconftool -s /system/proxy/autoconfig_url http://172.55.14.33/proxy.pac --type string
 spusit jako su -c "prikaz" uzivatel

A jak je vidět, obohatil jsem to o automatickou konfiguraci ze skriptu, který je uložen na serveru v souboru /var/www/proxy.pac. Nejstručnější obsah může být:

 function FindProxyForURL(url, host)
 {
         return "PROXY 192.168.9.251:3128; DIRECT";
 }

Obsah je snad srozumitelný.

Samba + LDAP

http://www.abclinuxu.cz/blog/mizoun/2009/3/samba-plus-ldap
http://wiki.debian.org/LDAP/NSS

Debian Squeze nepoužívá slapd.conf, ale vše dává do adresáře slapd.d. Schémata jsou v adresáři schema. Po zkopírování samba.schema do adresáře je potřeba vytvořit LDIF soubor samba.ldif. Použil jsem tuto fintu:

Vytvořit /etc/ldap/slapd.conf s tímto obsahem:

 include         /etc/ldap/schema/core.schema
 include         /etc/ldap/schema/cosine.schema
 include         /etc/ldap/schema/nis.schema
 include         /etc/ldap/schema/inetorgperson.schema
 include         /etc/ldap/schema/samba.schema

Na pořadí záleží! Pak spustit:

 slapcat -f /etc/ldap/slapd.conf -F /tmp -n0 -s "cn=samba,cn=schema,cn=config"

V /tmp najdeme adresář cn=config/cn=schema a v něm soubory se schématy v ldif tvaru. Zkopírujeme ten samba.ldif do /etc/ldap/slapd.d/cn=config/cn=schema/ a nastavíme mu vlastníka/skupinu openldap.openldap. Mělo by to fungovat i bez restartu démona slapd, ale není to pravda, restartujte ho.

Bez "aktivace" samba.ldif dostaneme při spuštění smbldap-populate řadu těchto ošklivých hlášek:

 failed to add entry: objectClass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 498, <GEN1> line 234.

Pokud vás na tyto stránky navedla tato chybová hláška, pak vítejte v klubu! :-)


Po přidání uživatele pomocí smbldap-add se nejde přihlásit s hláškou NT_STATUS_PASSWORD_MUST_CHANGE. Při přihlášení v Linuxu je to podobné. Problém není se Samba hesly, ale s údajem shadowMax. Ten nastavit na 99999 a je po problému.

LVM - změna velikosti logické jednotky

 lvextend -L +20G /dev/mapper/grp1-var
 resize2fs /dev/mapper/grp1-var

Zmenšit se dá opačným postupem, ale diskový oddíl nesmí být připojený (nejde dělat za pochodu).

Postup při výměněně disků za větší u raid+lvm.

Návod je na samostatné stránce. Výměda disků za větší u raid + lvm

ImageMagick - zvětšení plátna do průhlednosti

 convert src-pic.png -gravity southeast -extent 107x29 -fuzz 20% -transparent white dst-pic.png

Na pořadí parametrů záleží!

Nejdříve nastaví, kam posunout původní obrázek na budoucím větším plátně. Dáme rozměry plátna. Fuzz se týká následujícího údaje transparent, který říká kterou barvu zprůheldnit (bílá je automaticky vložena při zvětšování plátna). Fuzz je rozptyl barevnosti od té bílé.

Zjišťováno cca 5 hodin hrubého času.

Obnova GRUB ze záchranného disku

Situace: Systém nebootuje, protože nenačte grub ze zaváděcího sektoru. Například po havárii disku v RAID, přičemž na funkčním disku není GRUB nainstalován.

Nabootovat z CD Debianu a přepnout se do konzoly.

 mkdir /mnt
 mkdir /mnt/{boot,dev,proc,sys}

 mount /dev/sda1 /mnt        # to je kořenový systém
 mount /dev/sda0 /mnt/boot   # je-li boot na samostatném oddílu

 mount --bind /dev   /mnt/dev
 mount --bind /proc  /mnt/proc
 mount --bind /sys   /mnt/sys

 chroot /mnt

 grub-mkconfig /boot/grub/grub.cfg
 grub-install /dev/sda

CTRL+D reboot

Výpadek raid

Stalo se, že se jeden člen RAID pole odpojil více/méně náhodně. V logu si kernel na něco stěžoval, ale žádný test neukázal chybu na disku. Tak jsem to zas jen připojil:

 # mdadm /dev/md1 --remove /dev/sdb2
 # mdadm /dev/md1 --re-add /dev/sdb2

Pozor, nezapomenout, že disk je ve stavu "fail", takže je nutné ho nejdříve "vyjmout" a teprve pak znovu-přidat.

Logování na vzdálený stroj

Povolíme logujícímu stroji naslouchat na UDP portu 514 v /etc/rsyslog.d/gr-remlog.conf:

 $ModLoad imudp
 $UDPServerRun 514
 local3.*                /var/log/muljog.log

A nezapomeneme log rotovat v /etc/logrotate.d/gr-remlog.conf:

 /var/log/mujlog.log {
         weekly
         rotate 5
         compress
         nomail
         notifempty
         missingok
 }

TODO: Někde ještě zajistit, aby nám do logu nemohl zapisovat jakýkoliv cizí vtipálek (iptables, konifgurace rsyslogd...?)

Jak z chrootu ftp serveru zpřístupnit vně ležící adresář.

Máme-li uživatele na ftp serveru zamčené v jejich domovském adresáři, není možné jim zpřístupnit nic, co je mimo tento chroot pomocí symbolických linků - ftp server je ignoruje. Řešením je místo linku použít mount:

 mount --bind /home/ftp /home/username/ftp 

Černý okraj ve FullHD u ATI

Problém: Obraz je trochu zmenšený s černým okrajem.

Připojení monitoru HDMI kabelem ke grafické kartě ATI a monitoru Samsung BX2231.

Obraz je zmenšený a na monitoru jsou černé okraje okolo obrazu.

V menu monitoru najít Setup & Reset, PC/AV Mode nastavit na PC.

V Catalist Control Center dát volbu Grafické, Zobrazení a pracovní plochy. Kliknou pravým na malý monitor dole - nastavení. Záložka "možnosti měřitka" a posuvníkem zvětšit na maximum (tj. 0%).

bash: cyklus se soubory s mezerou v názvu

Obvyklé

 for NN in $(ls); do ...

nefunguje - soubor s mezerou v názvu je brán jako dvě položky (mezera odděluje položky v seznamu for).

Řešení:

 ls | while read NN; do ...

zdroj: http://www.macgeekery.com/tips/cli/handling_filenames_with_spaces_in_bash

VirtualBox nejede po aktualizaci jádra

Po aktualizaci jádra nejde spustit žádný virtuální stroj ve VirtualBoxu. To je tím, že po aktualizaci jádra se nevygenerovaly nové moduly jádra pro VirtualBox. Náprava je jednoduchá:

 dpkg-reconfigure virtualbox-ose-dkms

Windows update a proxy

Windows update nefunguje přes proxy server, ačkoli je to nastaveno v "nastavení internetu". Je to proto, že to považuje za uživatelské nastavení, ale update je systémová záležitost.

Nejjedodušší řešení je příkaz:

 proxycfg -p název_serveru_proxy:číslo_portu

v DOS okně.

Hromadné přejmenování souborů z linuxové konzoly

 rename 's/\.JPG$/\.jpg/' *.JPG

Power saving mode / out of range

Při startu systému se monitor přepne do "power saving mode" a po tušeném startu do X se zobrazí hláška "Out of range".

Řešení: Nastavená hodnota vga= v konfiguraci zavaděče grub2 (lilo?). Odstranit z konfigurace, pak systém naběhne normálně.

Windows 8 s chováním Windows 7

Po přihlášení zobrazit plochu a ne Metro (patchwork, dlaždice, nebo jak tomu říkáte):

Na ploše na panelu úloh dole kliknout pravým tlačítekm myši a v nastavení to najít (teď nesedím u stroje s Win8, ale to najdete :)

Nainstalovat http://www.classicshell.net/ - udělá tlačítko "Start", jak jsme "zvyklí" z Win7.

Windows a fdisk -> diskpart, správa disků

Když dám ve Windows příkaz "fdisk", tak tam není. Ale je tam příkaz "diskpart", který umí to samé a ještě se mi zdá o něco přehlednější. O držku je to s ním ale taky :-)

Přehlednější s grafickým rozhraním je nástroj "správa disků", který se objeví při kliknutím ptm na ikonu "tento počítač" -> "spravovat".

Pro někoho jsou to samozřejmosti, pro ne-windows adminy špeky. :-

Postfix - práce s frontou

 mailq

Vypíše všechny maily ve frontě včetně jejich ID.

 postcat -q ID | less

Vypíše konktrétní mail. Místo less často stačí head. Parametr -v vypíše další neuvěřitelné podrobnosti.

 postsuper -d ID

Vymaže mail z fronty.

 postsuper -d ID fronta

Vymaže ze zadané fronty (tj jméno adresáře ve /var/spool/postfix/

 postsuper -d ALL fronta

Vymaže VŠECHNY maily za zadané fronty - hodí se pro promazání frotny defer plné "backcatteru" tedy nedoručitelných odpovědí na nadoručitelné maily.

 postsuper -d ALL defer
 postsuper -d ALL deferred

HTML entity na UTF-8 html-xml-utils

Dostal se mi do rukou web, kde byly texty zprzněny do html entit. Konvertor, který to umí řešit máme kupodivu v Debianu v balíčku html-xml-utils. Konkrétně je to příkaz hxunent. Balíček obsahuje spoustu dalších utilit.

Najít porušené symbolické linky

 # find -L /kde -type l

basename, dirname

Tyto dva příkazy si prostě potřebuji zapamatovat. Místo basename jsem používal tuto kolonu:

 echo $FILE | rev | cut -f1 -d"/" | rev

:-)

LXDE přepínání klávesnice

Do souboru:

 /etc/xdg/lxsession/LXDE/autostart

přidat řádek:

 setxkbmap -option grp:switch,grp:alt_shift_toggle cz,us

A na panelu si nastavit applet na přepínání klávesnice.