Archiv pro štítek: Bash

Smazání mailů z fronty podle předmětu

Jak smazat zprávy z fronty posfixu

Občas se něco nepovede a je potřeba promazat mailovou frontu. Pak přijde vhod tento snippet, který projde všechny zprávy ve frontě a smaže ty které mají zadaný předmět subject.

 

Jak obejít politiku Cisco AnyConnect VPN klienta

VPN klient blokuje přístup do LAN

Občas se potřebuji připojit k pracovní VPN. Používáme Cisco Anyconnect Secure Mobility Clienta, který si při každém připojení stáhne profil podle vybrané skupiny a následně podle toho co je v profilu buď blokuje přístup do lokální sítě (tedy i do internetu, pokud nevyužiji firemní proxy server).

Kdyby naše firemní proxy fungovala spolehlivě tak to vem čert, ale jelikož nefunguje dobře tak raději využívám svoje připojení do internetu. Profil VPN skupiny kterou používám pro připojení schválně blokuje přístup do LAN. Musím tedy neustále vypínat a zapínat VPN, podle toho jestli chci hledat něco v Google nebo se chci připojit na nějakou firemní aplikaci.

Jak obejít blokaci

Našel jsem postup na webu superuser.com, který krásně funguje. Ve zkratce jde o to že se zkompiluje jednoduchá knihovna, která bude odchytávat volání Cisco AnyConnect. VPN klient totiž přenastaví a následně hlídá routovací tabulku voláním nějaké funkce ve svojí knihovně. V tom mu zabráníme.

Kompilace knihovny

V první řadě je nutné vytvořit C++ soubor s názvem třeba hack.c:

Následně zkompilujeme do vlastní knihovny pomocí:

Výslednou knihovnu přesunout nejlépe k ostatním knihovnám AnyConnectu:

Nyní je nutné zastavit službu vpnagentd:

Po zastavení služby vpnagentd už stačí jenom upravit init skript, třeba pomocí editoru vi:

V init skriptu je nutné najít místo kde se spouští samotná binárka vpnagentd a upravit takto:

Po tomto kroku je již možné spustit vpnagentd:

Nastavení routingu

Nyní lze po připojení nastavovat libovolně routy – tedy je možné opravit to co nastaví AnyConnect client a používat plnohodnotně lokální síť současně s VPN. Já vždycky po připojení VPN spustím tyto příkazy:

První příkaz odstraní blokování nastavené v iptables (ano – to taky nastavil Cisco AnyConnect, díky). Druhý smaže routu která říká že všechno poleze do rozhraní cscotun0. Třetí příkaz řekne že do rozhraní cscotun0 poleze pouze síť 192.1.0.0/16.

 

Přihlášení na SSH pomocí expectu

Nechci psát heslo dvakrát

Spravuji linuxové servery na kterých je zakázané přihlášení pomocí uživatele root. Přihlásit se na takového uživatele pro mne znamená:

  1. Přihlásit se pomocí SSH pomocí mého osobního účtu = 1x zadávám svoje heslo
  2. Po přihlášení napsat příkaz sudo -i a znovu zadat heslo = 1x zadávám svoje heslo

Musím tedy dvakrát po sobě zadávat stejné heslo. Proto jsem si udělal script v expectu, kterému sdělím svoje heslo pouze jednou. Script se následně pod mým loginem přihlásí na server a spustí příkaz sudo -i, kterému pošle heslo které jsem mu sdělil. V následujícím scriptu se heslo čte ze stdin, ale je možné ho načítat i ze souboru (nedoporučuji):

Vytvoření aliasu pro bash

Vytvořil jsem si taky jednoduchý bash alias proto abych do skriptu nemusel psát natvrdo svůj login. Tento wrapper vypadá následovně:

Wrapper je potřeba umístit do souboru .bash_aliases v home adresáři.

Jak se nyní přihlašovat

Nyní stačí zavolat příkaz ssh-login server.domena.tld, příkaz se zeptá jen jednou na heslo:

Po úspěšném přihlášení mi skript dovolí s root shellem interagovat.

Ubuntu 14.04 smazání starých kernelů

Občas mi při update kernelu dojde místo v /boot a potom je potřeba smazat starší kernely, které již nepoužívám. Dělat to po jednom ručně je děsně otravné. Proto jsem našel tento script, který stará jádra smaže.

Pozor jaká jádra mažete! Doporučuji chápat co tento příkaz dělá, pokud mu nerozumíte raději stará jádra mažte ručně!

Zdroj: http://askubuntu.com/questions/2793/how-do-i-remove-old-kernel-versions-to-clean-up-the-boot-menu

Čistý výstup z nástroje ldapsearch

Dekódování z base64 a odstranění zalomení jedním řádkem

Poslední dobou pracuji hodně s MS Active Directory a potřebuji dostat při hledání pomocí nástroje ldapsearch nezalomený výstup a rozkódovaný z base64:

Tento snippet pochází z http://www.private-pages.com/index.php/Ldapsearch_cleanup_output.

Kerberos ověřování v prohlížeči Chromium

Používám Chromium browser a potřeboval jsem zapnout ověřování pomocí kerberosu. Klasické spuštění prohlížeče s parametry nefungovalo:

Při zapnutém logování se log soubor nachází v ~/.config/chromium/chrome_debug.log.

Problém byl v tom, že Chromium browser od určité verze ignoroval povolené domény, které jsem vyjmenoval pomocí parametru při startu. Povolit domény je možné pouze pomocí vytvoření json souboru v /etc/chromium-browser/policies/managed/kerberos.json:

Ověřit že se politika aplikovala je možné při zadání chrome://policy/ do adresního řádku.

Jak vytvořit SSL certifikát

Nejdříve si vždy vygeneruji privátní klíč a s ním rovnou žádost o podepsání certifikátu:

Žádost dopravím klidně nezabezpečeným komunikačním kanálem k certifikační autoritě která mi žádost podepíše a v tu chvíli vzniká certifikát – vrácený podepsaný CSR požadavek od certifikační autority.

Dreamhost.com

Novější verze OpenSSL vkládají na začátek privátního klíče místo hlavičky  BEGIN RSA PRIVATE KEY  hlavičku BEGIN PRIVATE KEY  protože soubor obsahuje privátní klíč a OID (identifikátor objektu) který identifikuje typ klíče. Pro převedení na starý styl používám tento příkaz:

SSL certifikáty zdarma

Pokud se někomu nechce platit, nebo potřebuje pouze testovat doporučuji nechat si podepsat certifikát u jedné z těchto autorit:

Tyto autority mají výhodu v tom, že jsou předinstalovány jako důvěryhodné skoro v každém zařízení – i v mém telefonu s Androidem.

Nefungující dialogy OWA v prohlížeči Chromium

Nefungují vám od jisté verze prohlížeče Chromium / Google Chrome správně dialogy ve webovém OWA (Outlook Web Access)?  Po kliknutí na tlačítko, které má vyvolat dialog se nic neděje. Proč?

Protože OWA používá zastaralé Show Modal Dialog API, které je v novějších verzích prohlížeče Chromium defaultně vypnuté – v tuto chvíli ho lze ručně zapnout ale pouze do data 30.4.2015.

Jak zapnout podporu v Ubuntu

Jak ověřit povolení Show Modal Dialog API

Ověřit zda povolení proběhlo úspěšně je možné na chrome://policy/, viz obrázek níže:

Policy

Zdroje:

http://www.chromium.org/administrators/linux-quick-start
http://www.chromium.org/administrators/policy-list-3#EnableDeprecatedWebPlatformFeatures
http://mondotech.blogspot.cz/2014/10/fix-chrome-37-and-38-issues-with.html

OpenLDAP – Bash crop function

V práci občas pracuji s daty která jsou uložená v LDAP databázi. Potřebuji v nich vyhledávat pomocí nástroje ldapsearch z balíku ldap-utils. Bohužel tento nástroj má (alespoň pro mne) nepříjemnou vlastnost – zalamuje delší záznamy a vždycky vypisuje spoustu kravin okolo. 

Jak vypnout zalamování

Až dnes jsem zjistil, že lze vypnout zalamování dlouhých záznamů vypisovaných pomocí ldapsearch – je zapotřebí využití přepínače -o:

ldif-wrap=<width> (in columns, or „no“ for no wrapping)

Skrytí nepotřebných informací ve výpisu

Jako první je potřeba použít u příkazu ldapsearch tři přepínače -LLL, které zajistí vytištění jenom a pouze atributů, které jsou potřeba pro další zpracování.

A single -L restricts the output to LDIFv1. A second -L disables comments. A third -L disables printing of the LDIF version. The default is to use an extended version of LDIF.

Funkce na oříznutí

Tuto funkci jsem si přidal do ~/.bashrc:

Funkce zajišťuje nahrazení zalomení dlouhých položek a následně filtruje pouze hodnotu za dvojtečkou ale pokud jsou data ve formátu base64 tak začínají dvěmi dvojtečkami – na začátku takového řetězce funkce schválně nechá mezeru, aby šlo poznat že jde o base64.

Oříznuté crop funkcí:

Funkce na oříznutí konkrétního atributu se volá takto:

Jak se s tím vypořádali jiní

Podívejte se jak taková crop funkce na oříznutí výstupu může také vypadat: https://richmegginson.livejournal.com/18726.html