Avahi: uživatelské programy

Adam Štrauch 30. 3. 2012

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.

widgety

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.

Našli jste v článku chybu?
Lupa.cz: Kdo vyhraje Kříšťálovou Lupu? Hlasování začalo!

Kdo vyhraje Kříšťálovou Lupu? Hlasování začalo!

Vitalia.cz: Antibakteriální mýdla nepomáhají, spíš škodí

Antibakteriální mýdla nepomáhají, spíš škodí

Vitalia.cz: Tesco nabízí desítky tun jídla zdarma

Tesco nabízí desítky tun jídla zdarma

Lupa.cz: Cimrman má hry na YouTube i vlastní doodle

Cimrman má hry na YouTube i vlastní doodle

Lupa.cz: Další Češi si nechali vložit do těla čip

Další Češi si nechali vložit do těla čip

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

Lupa.cz: Proč jsou firemní počítače pomalé?

Proč jsou firemní počítače pomalé?

120na80.cz: Co je padesátkrát sladší než cukr?

Co je padesátkrát sladší než cukr?

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Lupa.cz: Jak levné procesory změnily svět?

Jak levné procesory změnily svět?

Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

Podnikatel.cz: Instalatér, malíř a elektrikář. "Vymřou"?

Instalatér, malíř a elektrikář. "Vymřou"?

Podnikatel.cz: Nemá dluhy? Zjistíte to na poště

Nemá dluhy? Zjistíte to na poště

Vitalia.cz: dTest odhalil ten nejlepší kečup

dTest odhalil ten nejlepší kečup

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

Podnikatel.cz: Tyto pojmy k #EET byste měli znát

Tyto pojmy k #EET byste měli znát

DigiZone.cz: Funbox 4K v DVB-T2 má ostrý provoz

Funbox 4K v DVB-T2 má ostrý provoz

Vitalia.cz: 5 chyb, které děláme při skladování potravin

5 chyb, které děláme při skladování potravin

Vitalia.cz: Tradiční čínská medicína a rakovina

Tradiční čínská medicína a rakovina