7 málo používaných technik v Bashi

Docela zajímavý článek s tímto titulkem se nachází na Linuxárii. Další náměty na zefektivnění práce naleznete na CommandlineFu.

Abych jen neopisoval, tedy alespoň ne jen z jednoho zdroje, mám pro vás ještě jeden drobný tip, pokud někdy budete chtít dělat kontrolní součty adresářového stromu. Pak asi záhy zjistíte, že ani v jednadvacátém století nemají nástroje typu sha1sum přepínač -r pro rekurzivní prohledávání adresářového stromu. Musíte si tedy pomoci jinak, tedy třeba takto:

find /some/path -type f -print0 | xargs -0 sha1sum

Autorem tohoto CommandLineFu je James Nylen.

StoryBundle: indie knihy bez DRM za pakatel

Někteří možná znáte Humble Indie Bundle, kde jednou za určitou dobu vyjde balíček několika her pro Windows, Mac i Linux, bez DRM a podobných nesmyslů (leč bohužel stále proprietárních). Abyste je získali, stačí zaplatiti vámi stanovenou libovolnou cenu. Část výtěžku jde na charitu.

StoryBundle je podobný počin, ale nejedná se o balíček her, nýbrž o balíček e-knih. Absence DRM je samozřejmostí a knihy jsou dostupné ve formátech EPUB a MOBI. Vystačíte si s libovolnou čtečkou, včetně té od oné nechvalně známé firmy, která pálí… totiž maže lidem z čteček knihy. Ale to je úplně jiný problém pro úplně jiný příspěvek.

Zpět tedy ke StoryBundle. V tuto chvíli (a ještě následujících 18 dní a 13 hodin) probíhá jejich první akce vůbec, zahrnuje cca 7 titulů, kde 5 z nich můžete získat od 1 USD, přičemž k získání všech 7 musíte zaplatit 7 USD (v současném kurzu asi 150Kč). Knihy jsou (jak správně očekáváte) v anglickém jazyce a co se žánrů týče, jedná se převážně sci-fi/fantasy.

Síťová neutralita: nutná, nikoliv postačující podmínka

Narazil jsem na zprávu o snaze prosadit síťovou neutralitu na poli EU. ISP by si nemohli dovolit zasahovat do vaší komunikace (např. omezováním rychlosti určitých portů nebo typů připojení, atd.) a současně tvrdit, že vám poskytují připojení k Internetu. Současně by také měli poskytovat informace o tom, jak upravují váš provoz, co zaznamenávají, atd.

To by bylo samozřejmě pěkné, ale bohužel to neřeší problém řady vlád, které usilují (mnohdy na základě lobbyingu velkých firem) o cenzuru a kontrolu nad tím, co na Internetu děláte. Sarkozy například nedávno chtěl lidi posílat do vězení za to, že si zobrazí (a možná i přečtou) webovou stránku. Jak něco takového může vyplodit prezident demokratické země asi nikdy nepochopím.

Francie také třeba implementovala zákon, který umožňuje vlastníkům autorských práv odpojit kohokoliv od Internetu prostým zasláním upozornění jeho ISP. Proces obchází soudy, vlastníci autorských práv nemusejí nic dokazovat a i když je možné se odvolat, dá se tím prý dosáhnout pouze zmírnění trestu, ale nikoliv zrušení trestu.

Síťovou neutralitu je třeba aplikovat nejenom ve vztahu k ISP, ale také k vládám a politikům. A nejenom síťovou neutralitu.

Prohlížení webu přes SSH SOCK5 proxy

OpenSSH toho umí poměrně hodně a není proto divu, že se o něm píší i celé knihy. Jednou jeho zajímavou vlastností je možnost vytvořit SOCKS5 proxy, která bude veškerou komunikaci směrovat přes SSH. Máte-li tedy SSH účet na nějakém serveru, kde to administrátor nezakázal, můžete surfovat „přes“ něj. Příkaz pro vytvoření SOCKS5 proxy vypadá takto:

ssh -D 8888 -Nf uzivatel@example.com

Parametr volby -D určuje místní port, kde bude sídlit SOCKS5 proxy. Tento port na localhostu je pak samozřejmě třeba nastavit v prohlížeči.

Vlastosti a výhody tohoto nástroje jsou:

  1. komunikace je šifrována mezi vámi a SSH serverem, váš ISP tedy nebude mít šanci sledovat obsah vaší komunikace
  2. SOCKS5 proxy umí tunelovat nejenom vlastní komunikaci, ale i DNS dotazy (doporučuji se ujistit Wiresharkem, ne všechen software to nutně umí), tudíž, pokud váš prohlížeč neprosakuje, váš ISP by neměl mít šanci zjistit s jakými weby komunikujete sledováním DNS provozu
  3. komunikace samozřejmě není šifrována mezi SSH serverem a cílovým serverem, tudíž správce tohoto serveru a/nebo váš „serverový“ ISP uvidí jak komunikaci, tak DNS dotazy

Mezi důvody, proč tento nástroj použít, může patřit:

  • jste někde připojeni přes nešifrovanou nebo neznámou WiFi
  • nedůvěřujete svému ISP
  • jste připojeni přes cenzurujícího ISP
  • chcete obejít omezení přístupu na nějaký web (některé weby jsou dostupné např. pouze z USA nebo jiné země)
  • chcete extra-bezpečně přistupovat k webu umístěném přímo na daném serveru s SSH
  • atd.

Přirozeně, tento nástroj je možné použít i s jiným softwarem než nutně s prohlížečem, stačí podpora SOCKS5.

Připojení virt-manageru z Arch Linuxu na RHEL 6.2

Tento blogpost je čistě technický a obsahuje řešení jednoho nepříjemného problému. O co jde? Mám stanici s RHEL 6.2 klonem (Scientific Linux), kde je rozběhnutá virtualizace (libvirtd). Na druhé stanici je Arch Linux, kde také běží libvirtd. Oba stroje jsou v lokální síti, tak proč nemít možnost přihlásit se z virt-manageru přes SSH z Arch Linuxu do Scientific Linuxu, a mít šanci ovládat virtualizaci „vzdáleně“? Problém je v tom, že to nejde. Proces dokonce ani neskončí chybou, virt-manager se jen nepřipojí. Google odhalí možný problém při absenci balíčku x11-ssh-askpass, který by měl být na klientovi (Arch Linux) nainstalován, Jenomže ani s ním to nefunguje.

Řešení je přesto velmi jednoduché, i když přijít na něj až tak triviální nebylo (musel jsem zkompilovat jinou verzi virt-manageru, která naštěstí chybu ohlásila a podle ní jsem si správně tipnul). Na stroji s RHEL 6.2 stačí vytvořit následující symbolický odkaz:

ln -s /usr/bin/nc /usr/bin/nc.openbsd

A to je celé.

Jinke Hanlin a vleklá chyba s češtinou v epub

Zklamali mne čeští distributoři těchto čteček e-knih, jelikož o docela podstatném problému, jakým je nezobrazování korektních českých znaků v případě knih ve formátu epub, vědí řádově roky, a doteď ho nebyli schopni vyřešit. Problém spočívá v tom, že software určený k prohlížení epub souborů používá font bez některých českých znaků s diakritikou. Paradoxně, byť čtečky jako takové umožňují změnu fontu, v případě formátu epub to nejde (ten software to neumožňuje).

Nejnovější anglický firmware již umí u epub měnit font, česká varianta firmwaru ale není dostupná (byť byl čas od dubna 2011, kdy firmware vyšel) a anglický firmware nemá (překvapivě) podporu pro český jazyk.

Nouzovým řešením je upravit e-knihu, aby používala jiné fonty. Lze buď postavit fonty mimo epub a z něj se odkazovat na pevné umístění na kartě, nebo fonty „zadrátovat“ do knihy (pak je kniha v této podobě pěkně přenositelná). Obojí představuje nutnost upravit knihu, což není úplně triviální.

Za tímto účelem jsem pro vlastní potřebu vytvořil shellový skript, který fonty natvrdo zadrátuje do e-knihy. Kód není nic moc a nezaručuji, že to bude fungovat u všech e-knih. Stejně nezaručuji, že skript neudělá nějakou neplechu. Pokud jste ochotni se skriptem pracovat na vlastní riziko a s vědomím, že se jedná o nedostatečně otestovaný skript, kde mohou číhat příšerné chyby s možnými fatálními důsledky, můžete si jej stáhnout (5Kb) – v opačném případě nic nestahujte a alespoň pište rozhořčené e-maily českému distributorovi. Skript se používá se takto (vyžaduje to Bash, sed, zip a unzip a další běžné unixové nástroje):

./hanlinize mybook1.epub mybook2.epub

Je to špinavé řešení, ale třeba OpenMagazín to upraví korektně. Místního distributora těchto čteček bych rád pokáral za jeho netečnost. „Pěkné“ je také to, že aktuální český firmware nelze odnikud stáhnout (oficiální odkazy jsou mrtvé), a jelikož firmware nejde před změnou zazálohovat, je třeba případné experimenty s jiným firmwarem zvážit (přijdete o nejnovější verzi českého firmwaru, který tam už nedostanete, dokud se distributor nezmátoří a neupraví odkazy na svém webu). To také považuji za nešťastné. Přitom to jsou schopné a levné čtečky, navíc na Linuxu založené (i když to jsou asi všechny).

Kdybyste potřebovali výsledný epub upravit nebo zkontrolovat, můžete využít vynikající epub editor Sigil.

Zdroje a další informace:

Shell tip: OGG/Vorbis a Jamendo

Doufám, že Jamendo tu nemusím příliš představovat. Řádově desítky tisíc alb pod různými více či méně svobodnými licencemi, převážně Creative Commons, které je možné bezplatně stáhnout a také používat. Oficiálně je na výběr mezi přímým (HTTP) stažením MP3 a stažením torrentů s MP3 a OGG/Vorbis. Kvalita u Vorbisu je vyšší, přesto o něj není příliš velký zájem, což patrně vede k tomu, že OGG/Vorbis není nabízen ke stažení a torrenty s ním nikdo neseeduje.

Po dlouhém hledání jsem konečně objevil způsob, jak se k Vorbisu dostat, a sice přes URL, které může obsloužit wget v skriptu (jediným parametrem je číslo alba):

#! /bin/bash
wget -c http://www.jamendo.com/get/album/id/album/archiverestricted/redirect/$1/?are=ogg3

Shell tip: Co mi to zase blokuje zvukovku?

Jelikož mám tendenci svou workstejšnu nerebootovat a mít hromadu spuštěných aplikací, občas se stane, že si chci něco přehrát, ale nemůžu, protože mi něco zablokovalo zvukovku. Který proces je ovšem v takovém případě viníkem, resp. jak to zjistit? K tomu existují dva nástroje, lsof a fuser:

sudo lsof /dev/snd/*

sudo fuser /dev/snd/*

Více informací viz:

SNI aneb virtuální weby přes SSL s jednou IP adresou: stále nic moc

Nasadit moře virtuálních webů na jeden jediný server dnes není vůbec žádný problém (naopak, je to běžná praxe). Vše může bez problémů jet i na jedné IPv4 adrese, kterých, jak asi víte, je teď už kritický nedostatek. Problémem je, že takto mohou weby jet jen přes HTTP, ale už ne přes HTTPS. Proč je tomu tak? Přistupujete-li k nějakému webu, třeba na www.shadow.cz, protože si chcete přečíst tento článek, zašle váš prohlížeč serveru následující požadavek:

GET /blog/1106
Host: www.shadow.cz

Jak je patrné, webový server běžící na příslušné IP adrese z požadavku zjistí, ke kterému webu chcete přistupovat, a zobrazí vám požadovanou stránku. Na jedné IP adrese tak můžou běžet klidně tisíce webů, resp. virtuálních webů (virtual host).

Když chcete k serveru přistupovat přes HTTPS, je situace jiná. Prohlížeč totiž musí nejprve vytvořit šifrované spojení, a teprve potom může přes toto spojení zaslat požadavek s názvem virtuálního webu, ke kterému chcete přistupovat. Webový server tedy nemá žádnou šanci poznat, který certifikát (ty jsou obvykle vydávány pro jednu konkrétní doménu) má prohlížeči naservírovat.

Řešení tohoto problému samozřejmě existuje, je jím rozšíření TLS protokolu (což je nástupce SSL protokolu) s názvem SNI (Server Name Indication), které problém řeší tím, že klient dodá jméno serveru, ke kterému se chce připojit, ještě před tím, než mu server odešle příslušný certifikát.

Situace však není až tak růžová. Servery SNI jakž takž už nějakou dobu podporují. Celé SNI tedy v tuto chvíli stojí a padá především na podpoře prohlížečů. Což o to, takový Firefox podporuje SNI od verze 2.0 (prostředek 2006), ale u IE je situace jiná. Ten sice SNI umí také (od IE 7), jenomže ne na XP, které jsou bohužel stále velice rozšířené. Dokonce ani aktuální osmička na XP stále SNI nepodporuje. Microsoft zde skutečně má očekávání nezklamal, stále brzí pokrok jako brzdila TV Nova digitalizaci. A tak vám na XP nezbyde než uživatelům sdělit, aby vyměnili ošoupaný a neschopný IE za něco produktivnějšího. Jenomže k tomu, abyste to jako provozovatelé webů mohli udělat, musí váš web být schopen toto uživatelům sdělit, což bude těžké, pokud se uživatelům bude zobrazovat chybové hlášení o tom, jak je použitý certifikát nebezpečný a že vzdálený server je určitě nějaký podvodník, který chce uživatele na dálku sežrat. Ach jo.

Abych nenadával jen na Microsoft, ani Google se svým Androidem a Chromem v podpoře SNI neoslnil. Na XP musíte použít až šestku (vydána v září 2010), jinak vám stačí 5.0.342.1 z března 2010. No a co se Androidu týče, tam to možná půjde, ale až ve verzi 3.0, která dosud nebyla vydána. Dřívější verze SNI prostě nepodporují.

Jak dlouho budeme muset čekat, než bude SNI přístupné z běžně dostupného klientského softwaru? Stihneme to ještě před přechodem na IPv6?