Archive for October, 2007

Těžko život administrátora aneb skriptujeme pro BFU

Tuesday, October 23rd, 2007

Moje matka po půl roce, co máme doma desktop, projevila reálný zájem o připojovat se přes něj na internet. Běžný linuxák prohlásí, ale to je snadné, připojí se na svůj Linuxový router, nastaví Iptables, povolí ICQ na firewallu, provrtá tři zdi, zapojí síťové kabely, třikrát se pomodlí k Linusovi a je to. Jednoduché, že? Ale u mě je tomu jinak…

Situace

Největší problém je v tom, že nebydlím v Praze, ale daleko na horách (čtěte na vesnici 30 km za Prahou), kde je dostupnost internetu shodná s dostupností multikin uprostřed Sahary nebo dobrého piva v Americe. Proto jsem nucen doma používat nevalně rychlý a nevalně stabilní CDMA modem. Jde o USB modem a připojení je vytáčené, což přináší spoustu radostí s připojováním.

Vytočíte, spadne, vytočíte, spadne, vypnete a zapnete modem, vytočíte, spadne, dáte modem do ledničky, vytočíte,
spadne, vytočíte se vy a jdete si číst

Cožpak já, já už vím jak na to a nějak se postarám, abych ten internet měl, ačkoliv občas s pingem 16 sekund. Ale co právě moji rodiče, otec počítače neznalý manager a matka, byť počítačově zdatná, něco jako shell naposledy viděla v době, kdy v práci používala Cobol a Algol. Od té doby pochopitelně trošku zpohodlněla, minimálně co se počítačů týče, dneska už jen provozuje makra ve Visual Basicu, která jsou trošku něco jiného než shell. Taky bych jí mohl něco naučit, ale to je moc práce a málo výzva ;)

Řešení

Takže nakonec padlo řešení na bashovský skript s grafickými dialogy pomocí zenity. Zenity je bashový zobrazovač GTK+ dialogů, mající spoustu voleb a hodina češtiny mi přišla ideální ke zkoumání jeho možností. Brzo jsem objevil, jak se vytváří všechna praktická okénka.

zenity error

Tím jsem vyřešil mou binární komunikaci s matkou ( Ti všímavější už pochopili komunikace probíhá na signálové úrovni, socketově bude probíhat pouze první ukázka)

Samotné připojení ovšem taková legrace není, neboť připojování probíhá pomocí pppd. Celý problém spočívá v detailu, že pppd je pěkný filuta, špatně se z něj získávají libovolné údaje o čemkoliv.

Vyzkoušel jsem leccos, ale všechno troskotalo na jedné základní věci, jak odchytit celý výstup, když se pppd při úspěšném spojení neumí “vymáčknout” a svůj výstup nedokončí. Zkoušel jsem různé pajpy do souborů a podobně, ale pořád to někde haprovalo, výstup se prostě nechtěl číst.

Až jednoho dne (respektive ještě ten den, asi 8 hodin poté) jsem při hledání parametrů v manuálových stránkách příkazu pon objevil jiný příkaz, plog. Plog se sice jmenuje stejně jako zvuk, který vydá záchodový zvon při běžném používání, ale je mnohem užitečnější. Umí totiž vypisovat několik posledních výstupů z démona pppd. Když jsem se pustil do zkoumání, objevil jsem že celé slavné plog je sedmiřádkový skript

1
2
3
4
5
6
7
#!/bin/sh
if [ -s /var/log/ppp.log ]; then
    exec tail "$@" /var/log/ppp.log
 
else
    exec tail "$@" /var/log/syslog | grep ' \(pppd\|chat\)\['
fi

V čem je ten skript tak převratný? Poradil mi, že můžu data vytahovat ze syslogu, kam mi pppd loguje. Výsledkem všeho je v podstatě genitální skript, který můžu matka (případně babička, dědeček, pes, papoušek nebo želva) v klidu spustit a vědět, zda internet opravdu funguje. Jak to celé vypadá?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
#Provedeme připojení přes CDMu
pon cdma & &> /dev/null
 
#Počkáme si, až se CDMA určitě připojí
sleep 8
 
#Vezmeme poslední řádek ze syslogu
vystup=`tail -n /var/log/syslog | grep ' \(pppd\|chat\)\[' | tail -n1 `
 
#!!!!!! POZOR !!!!!!!!!!
# !!! Od tohoto místa prosím slabší povahy, aby dále nečetli, neboť půjde o velmi brutální prasečiny !!!
#!!!!!! POZOR !!!!!!!!!!
 
#zkusíme grepnout  jeden z obvyklých errorů
echo $vystup | grep "unrecognized option" - > /dev/null
 
#proměnná $? obsahuje exit kód posledního příkazu (u nás grep)
#Pokud je exit kód  0 (tedy jsem úspěšně grepli) pak
if [ $? -eq 0 ];then
    zenity --error --text="Modem není zapojen, nebo se to tak alespoň zdá";
    exit 1
fi;
 
#a dále grepáme
echo $vystup | grep "locked" - > /dev/null
 
if [ $? -eq 0 ];then
    zenity --error --text="Internet se tváří, že je již připojen";
    exit 1
fi;
 
echo $vystup | grep --ignore-case "Failed" - > /dev/null
 
if [ $? -eq 0 ];then
    zenity --error --text="Nepodařilo se připojit";
    exit 1
fi;
 
#Pokud se nic zvláštního nestalo
zenity --info  --text="Spojení se pravděpodobně zdařilo";

Ještě jsem neměl čas předhodit to betatesterům (tj. matce), ale i na to brzy dojde a já budu moct celý skript prohlásit za funkční (a časem snad i bugu-vzdorný a blbu-vzdorný)

Neúprosná statistika - Linux válcuje Vistu

Monday, October 22nd, 2007

Vista je na ústupu! Microsft jde ke dnu! Blíží se úsvit Linuxu! Končí éra Internet Exploreru! Gecko začíná ovládat svět!

Každý alespoň trochu malinko přemýšlející čtenář (proto tento článek vychází až odpoledne, nikoliv ráno, kdy je myslivost většiny jedinců včetně mě nulová) asi přemýšlí, kde jsem k podobným výkřikům přišel, neboť ani ti nejzarytější zastánci Linuxu by se neodvážili tvrdit podobné věci. Odpověď je jednoduchá:

Dnes ráno mi po velmi krátké době provozu tohoto blogísku dorazila statistika z Toplistu a já nestačil věřit svým očím. Že tu nebylo moc návštěvníků, to asi nikoho příliš nepřekvapí, ale statistika operačních systémů a prohlížečů je opravdu neúprosná.

Operační systémy

  • Linux - 75%
  • Windows 2000 - 12,5%
  • Windows XP - 12,5%
  • Windows Vista - 0%

Jak je v této statistice jasně vidět, Windows Vista nemají uživatelům co nabídnout a většina z nich se obrací na Linux. Pochopitelně existuje i několik tradicionalistů, kteří používají starší verze Windows.

Webové prohlížeče

Podobně jako je tomu v operačních systémech, i ve webových prohlížečích se projevil nový trend.

  • Gecko - 100%

Internet Explorer 7 evidentně také neuzaujal a dokonce i skalní příznivci Opery přešli na osvědčené Gecko s jeho často až netušenými featurami, o kterých se ostatním prohlížečům může jen zdát. Namátkou třeba modifikovatelnost, rozežranost nebo třeba výborně implementované zamrzání.

Co z toho plyne?

Jak vidno, Microsoft a jeho produkty jsou pouhým odkazem odkazem minulosti. Současnost patří Linuxu

Prosím všechny čtenáře, aby mě nebombardovali statistikami z jiných, vesměs nedůvěryhodných webů, jejichž statistiky nemají valnou výpovědní hodnotu. Jakékoliv rozdíly mezi jejich a mým měřením jsou v rámci statistické chyby.

Blogísek úspěšně založen

Saturday, October 20th, 2007

Vzhledem k situaci, vyvíjející se kolem mě jsem si nemohl odpustit jeden z nejdůležitějších počinů v životě počítačově činného člověka. Ano, je to tak, založil jsem si blog, abych na něj mohl psát kecy, co nikdo nečte, rady co nikoho nezajímají, matoucí informace, které způsobí problémy většině čtenářů a další podobně užitečné články

Technické řešení

Napadlo mě, že pro drtivou většinu z vás bude technické řešení tohoto blogu naprosto nezajímavé, takže jsem si dovolil ho zařadit. Nejprve jsem uvažoval o tvorbě vlastního PHP+DB systému, abych jako správný IT měl vše tak jak chci. Jenže pak jsem se čím dál tím víc začal potkávat s PHP, HTML a CSS ( především při tvorbě webu CXL.cz ) a má chuť pustit se do (pro mě) nekonečného souboje s různými prohlížečemi a jejich (ne)správnými interpretacemi CSS dost ochladla.

Později, když jsem hledal něco, co bych dal na kroniku, narazil jsem na Wordpress, a asi 3 dny poté jsem se pustil do tohohle blogu… Takže na čem to vlastně běží? Wordpress se skinem Pure, který jsem si lehce změnil, především aby neměl tak ošklivě velkou patičku, taky jsem si po dlouhém boji s fantazií a Gimpem udělal vlastní obrázek do hlavičky. Nakonec jsem ještě z ryze praktických důvodů přidal plugin WP-Syntax, kvůli budoucím (doufám) zdrojovým kódům, které se tu objeví

Co tu bude

Jak jsem již psal na začátku, můžete zde čekat spoustu nezajímavých informací o IT, speciálně pak o Linuxu, ale dojde asi i řeč na programování, a navrch asi sem tam něco osobního.