byobu Nadpis zní opravdu zvláštně a záhy vysvětlím o co se vlastně chci podělit. Nejdříve ale trochu té “omáčky” k pochopení kontextu. Byobu je terminálový multiplexer (ne tak zcela, viz dále), podobně jako Screen nebo Tmux a nepochybuji o tom, že některý z nich znáte.  Pro toho kdo by přece jen žádný z nich neznal bych jen poznačil, že se jedná je vylepšený CLI (poznámka je kvůli těm terminálovým emulátorům vyžadujícím X, jako třeba terminator) terminál, umožňující v jednom terminálovém okně spouštět více samostatných terminálových emulátorů najednou (splitem a taby) se současným zobrazením vybraných systémových informací v posledním řádku terminálového okna. Hlavně je ale možné se od celého sezení odpojit a později se k rozdělané práci opět připojit. On vlastně není Byobu až tak samostatný jak jsem jej popsal. Jedná se spíše o textový window manager využívající tmux nebo screen jako backend. Ale window manager zase zavání Xky a ty nejsou potřeba, takže ho pro jednoduchost můžeme považovat za vylepšený terminálový multiplexer.

O užitečnosti takového programu nelze polemizovat a použití je nasnadě. Byobu používám již dlouhou dobu a vždy mi dobře sloužil i v lokálním prostředí. Nyní jsem chtěl ale pokročit o kousek dál. Spouštět Byobu automaticky po přihlášení k vzdálenému serveru. Automatické spouštění lze realizovat pomocí interního instalátoru z konfiguračního okna, jak je vidět z obrázku.

byobu config

Jen poznamenám, že ke konfiguraci se lze dostat po stisknutí F9 ze standardně spuštěného sezení Byobu. Také je ale možné automatické spouštění aktivovat spuštěním příkazu…

/usr/bin/byobu-launcher-install

…a zpětně pak…

/usr/bin/byobu-launcher-uninstall

…to v případě, kdy je to pohodlnější, nebo kdy třeba F9 nelze použít. Ne vždy totiž přenos bindovaných speciálních kláves funguje. To jistě znáte, pokud nějaký multiplexer používáte z různých prostředí, ssh klientů a operačních systémů. Nyní Byobu funguje jak jsem chtěl. Spouští se automaticky po přihlášení a po stisku F6 jsem automaticky odhlášen z běžícího sezení a po přihlášení automaticky do sezení naskočím zpátky “do vlaku”. To je hezké, ale co v případě pokud se něco “podělá” a já se nebudu moci přihlásit? Dokážu si představit situaci kdy se do Byobu třeba po upgradu balíčku nebudu moci přihlásit a nebude se tak možné vůbec dostat do systému. Zdá se vám to příliš paranoidní? Už jsem podobnou situaci zažil při využívání alternativního shellu a nešlo se pak do systému nijak přihlásit ani z TTY a SSH (záchrana pak spočívala v chrootu z nabootovaného CD). V případě nějakého problému lze použít příkaz…

ssh -t login@server.kdesi bash

Výborně. Nyní už se cítím trochu bezpečněji a vím, že se mohu přihlásit vyřazením multiplexeru. Ovšem červíček stále hlodá. Co když nebudu moci použít SSH (spadlá služba, nedostupnost, …)? Přihlášení přes TTY to neřeší, tam je Byobu implementován též. Není nic horšího, než si sám podříznout větev na které stojím. Pokoušel jsem se o různé implementace podmínek kontrolou SSH připojení do .profile nebo .bashrc, ale ty nefungovaly, jelikož příkaz z .profile

_byobu_sourced=1 . /usr/bin/byobu-launch

není jediný a i po jeho přeskočení (třeba podmínkou, nebo i smazáním) se Byobu vesele spouští dál. Chtělo by to tedy další akce průzkumem instalačního skriptu a to už se mi nelíbí a ani nemusí být snadno realizovatelné rozlišení podle přihlašovací konzole. Přemýšlel jsem jak tedy na to. Zadání jsem si vytvořil toto: Nechci aby se Byobu spouštěl z TTY a naopak chci, aby se mi spustil přes SSH, ale jen když si to explicitně vyžádám. Hmmm, zdálo se mi to těžké a stále jsem zkoušel skriptovat při zapnuté automatice z Byobu. Nakonec mě napadlo, inspirován předchozím příkazem, automatiku vypnout a jednoduše spustit Byobu jako příkaz v ssh připojení. A hle, ono to funguje a dokonce velmi dobře. Po stisku F6 dojde také k odpojení s odhlášením. Přes TTY se Byobu neaktivuje jak jsem chtěl, a samotným stringem SSH si mohu řídit připojení do spuštěného Byobu sezení na serveru. Výsledné nastavení je tedy takové: Byobu ponechat bez automatického spouštění a SSH připojení aplikovat s tímto příkazem:

ssh -t login@server.kdesi byobu

K připojení bez multiplexeru stačí použít standardní příkaz

ssh -t login@server.kdesi

A na závěr na ukázku jedno split okno Byobu s dvěma taby.

byobu split okno