Hlavní navigace

Avahi: uživatelské programy

30. 3. 2012
Doba čtení: 5 minut

Sdílet

V posledním díle seriálu o daemonu Avahi si představíme několik programů, které ho dokáží naplno využít. Půjde o vzdálenou plochu, IM komunikaci a sdílení souborů. Ukážeme si, jak má taková správná podpora vypadat a jak se projevuje v praxi. Taky se podíváme, jak se dá získat výstup z Avahi pro potřeby skriptů.

V prvním díle jsme si řekli, že každý program, který podporuje Avahi, si musí poradit s oznámením své činnosti Avahi daemonu, jedná-li se o serverovou část, a nebo najít kompatibilní služby na síti, pokud jde o klientskou část. U serveru se oznámení promění na záznam schovaný někde v paměti, který je předán každému, kdo si o něj přes mDNS požádá. Žádat bude klient, který se shání po službách konkrétního typu. V praxi to pak vypadá tak, že si spustíte třeba sdílení vzdálené plochy a na jiném počítači nějaký program, který vám umožní se k této ploše připojit. Místo toho, abyste složitě zadávali adresu druhé strany, prostě spustíte program a už tam na vás kouká informace o běžícím VNC serveru na té a té adrese.

Bohužel to neplatí všude a i když se nějaký program pyšní podporou například v seznamu na Avahi wiki, může to znamenat cokoli. Můžete narazit třeba na podporu jenom serverové části, kterou má třeba Rhythmbox, nebo není podpora zkompilována zrovna v distribuci, kterou používáte. Spousta programů, které jsou v seznamu zmíněny, už se přestala vyvíjet a je spíše na obtíž. Spolehlivější zdroj se ukázala být Debian wiki, kde sice není zmíněn každý balíček, ale zase dává lepší přehled o tom, jak to vlastně je. V Linuxu Avahi naráží hlavně na tom, že se nikdy nestalo vyloženě vyhledávanou vlastností, a tak to aplikace ani nedávají moc na oči, i když si s ním poradí.

Kdo poslouchá

Pokud si nejste jistí, proč nějaký program nereaguje, jak má, máte dva nástroje pro skenování dostupných služeb vaší ZeroConf sítě. První je avahi-discover. Ten jsme nakousli už v první díle. Druhou možností je avahi-browser. Ten se drží příkazové řádky a disponuje mnohem většími možnostmi, a hlavně je možné ho využít i ve skriptech. Když třeba chceme vypsat všechny služby, použijeme parametrem -a:

$ avahi-browse -a
[...]
+  wlan0 IPv4 Transmission on bimbo                         Web Site             local
+ virbr0 IPv4 Virtualization Host bimbo                     Virtual Machine Manager local
+  wlan0 IPv4 Virtualization Host bimbo                     Virtual Machine Manager local
+ virbr0 IPv4 bimbo [02:63:1a:4e:30:31]                     Workstation          local
+  wlan0 IPv4 bimbo [00:0b:6b:87:1f:3f]                     Workstation          local
[...] 

V případě, že ještě přidáte -t, tak se hledání ukončí po tom, co si bude avahi-browser myslet, že už má všechno. Dokumentace upozorňuje, že někdy nemusí dojít k nelezení všech služeb, ale pokud chcete dostat nějaký užitečný výstup a využít ho, jiný způsob, než se pouštět do útrob libavahi, není. Zajímavější je kombinace parametrů -t, -p a vyfiltrování konkrétní služby:

$ avahi-browse -t -p _ssh._tcp
+;wlan0;IPv4;godie;SSH Remote Terminal;local 

Takovýhle výpis už můžete použít na skript, který najde všechny SSH servery na síti a provede například zálohu nebo jinou užitečnou činnost. Znaménko „+“ označuje, že byla služba nalezena. Pokud služba ze sítě zmizí, dostanete o tom notifikaci se znaménkem „-“. Samozřejmě jen v případě, že nepoužijete parametr „-t“.

Oba nástroje fungují nezávisle na tom, v jakém stavu je váš resolver. Ten vůbec nemusí mít o nějakém mDNS nebo Avahi tušení.

Když se budete snažit rozjet nějakou službu, můžete narazit na to, že při restartu Avahi daemona se ztratí oznámení, které aplikace Avahi daly. Aplikace o restartu samozřejmě nevědí a tak nepošlou další oznámení. V takovém případě nezbude nic jiného než si buď službu nakonfigurovat ručně přes XML konfiguráky nebo restartovat „ztracenou“ aplikaci.

IM komunikace

IM komunikace je stále populární a díky Facebooku a Googlu je čím dál blíže Jabberu/XMPP. Ještě lepší pak je, když není potřeba žádný centrální server, ale prostě se vás klient zapíše v Avahi a navíc se začne shánět po dalších jemu podobných v jedné síti. Podporu Avahi najdete například v Pidginu nebo Gajimu. Do obou lze přidat ZeroConf účet, vybrat si uživatelské jméno a už můžete chatovat se všemi uživateli na stejné síti. Stejně by měli fungovat i někteří klienti založení na Telepathy, kde by mohly být k dispozici i video hovory.

Sdílení souborů

Dalším příkladem je sdílení souborů. K tomu je potřeba nějaký SFTP/FTP/WebDAV/NFS server, který se umí nahlásit v Avahi, a pak také klient, jenž toho využije. Je možné, že se vám podaří rozjet třeba WebDAV na serveru Apache, který podporu pro Avahi má, ale postačí i instalace OpenSSH serveru, který v Avahi oznámí dostupnost SFTP i SSH protokolu. V KDE to je jednoduché, protože podporu najdeme v KIO slaves, a tak lze disky lokální sítě projíždět Dolphinem nebo třeba Krusaderem.

Samozřejmostí je funkční SFTP/SSH, což by neměl být problém s výchozí instalací a pokud chcete mít sdílení ještě jednodušší, můžete použít SSH klíče.

V prostředích založených na GTK je možné použít utilitu GShare, která se postará jak o přístup ke vzdálenému obsahu, tak i o jeho sdílení. Jako protokol pro přenos souborů se zde používá FTP.

ict ve školství 24

Vzdálená plocha

Posledním příkladem je práce se vzdálenou pracovní plochou přes VNC. Dobrou podporu najdeme v programech krfb a krdc. První z nich se postará o vytvoření VNC serveru a pošle oznámení Avahi. Druhý se na vzdálený server umí připojit. Když si na jednom stroji vytvoříte VNC server, na druhém ho hned po spuštění krdc najdete v seznamu dostupných serverů.

Shrnutí

Tímto bych seriál ukončil. Avahi umí usnadnit práci s lokální sítí, ale vzhledem k tomu, že se všechny důležité služby přesouvají směrem ke cloudu, bude jeho význam stále upadat. Někdo Avahi vyčítá, že to není volitelná součást systému. Nemůže být, protože jeho knihovny využívají různé méně či více důležité programy a další knihovny, na které uživatel narazí. Avahi si do systému zaneseme pouhou instalací části KDE a stejně tak kteréhokoli programu, který má zakompilovanou jeho podporu. U binárních distribucí to budou samozřejmě všechny, u kterých to jen trochu půjde, takže Avahi se v linuxových distribucích určitě jen tak nezbavíme a když už ho máme, měli bychom vědět, jak ho použít.

Seriál: Avahi

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.