rulu ruru

post Zálohy na vzdálenej čípotač jednoduše (cron,rsync,bash)

July 5th, 2010

Filed under: linux — starenka @ 11:45
Tags: , , , , , ,

Nejsem moc velkej fanda zálohování, ale už se mi to párkrát vymstilo, takže jsem byl donucenej s tím něco dělat. Potřeboval jsem nějakej batch, kterej odzálohuje, co potřebuju a nebude nutit připojovat fyzicky nějaký zařízení. Logicky tedy k zálohování dat na notebooku používám druhý PC, který je dafakto jen držák na HDD s hudbou a filmama. Menší problém je ten, že to PC je vetšinu času vypnutý (prostě nesnáším, když cokoliv běží 90% naprosto zbytečne pro případ, že bych to náhodou mohl potřebovat). Jediná rozumná volba tedy byla “zbudit” PC a po odzálohování se zeptat, jestli ho chci vypnout nebo ne (Ten dotaz je asi nejmenší zlo, na který jsem přišel. Chvíli jsem koketoval s myšlenkou, zda zjišťovat, jestli je zapnutý monitor/pc bylo zapnuty s vypnutým monitorem = nekoukám se na film etc., nicméně jsem nenašel žadnou stoprocetně spolehlivou cestu, jak zjistit, proč je počítač zrovna spuštěnej).

Jak na to? Na cílový mašině:

# aptitude install ethtool

Zjistíme, jestli karta podporuje WoL (d - magic packet, p - physical activity)

# ethtool eth0 | grep Wake-on
root@bedna:/home/starenka# ethtool eth0 | grep Wake-on
 Supports Wake-on: g
 Wake-on: d

Povolíme WoL:

# ethtool -s eth0 wol g
root@bedna:/home/starenka# ethtool eth0 | grep Wake-on
 Supports Wake-on: g
 Wake-on: g

Ten flag je bohužel třeba nastavit při každým spuštění, takže:

starenka@bedna:~$ cat /etc/init.d/wol
#!/bin/bash
### BEGIN INIT INFO
# Provides: wol
# Required-Start: $syslog $networking
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: sets wol on eth0
### END INIT INFO
ethtool -s eth0 wol g
# chmod +x /etc/init.d/wol

a spustímě skript při každým runlevelu (ehm)

# update-rc.d wol defaults

zjistíme MAC cílový mašiny:

# ifconfig -a | grep eth0

Na mašině odkud zálohujeme nainstalujeme rsync a wakeonlan

# aptitude install rsync wakeonlan

backup skript upravíme dle potřeb a šoupneme do cronu

#!/usr/bin/env bash
TAR_MAC="00:1f:d0:63:27:80"
TAR_HOST="bedna"
TAR_USER="starenka"
MAX_BW=400 #KB/s
MAX_TRIES=5
INTERVAL_TRIES=30
DIALOG_TITLE="–title Backup"

DIRS=(‘/photo’ ‘/www’ ‘/prac’ ‘/mail’
)
EXCLUDE=(‘.opera/cache/’ ‘.bzr’ ‘.svn’ ‘.git’
)

kdialog –passivepopup ‘Starting regular backup batch’ 5
if [ `ping -s 1 -c 1 $TAR_HOST > /dev/null; echo $?` -eq 1 ]; then
    kdialog $DIALOG_TITLE –passivepopup "$TAR_HOST is down, sending magic packet" 5   
    wakeonlan $TAR_MAC
    TRIES=0
    until [ `ping -s 1 -c 1 $TAR_HOST > /dev/null; echo $?` -eq 0 ]; do
        let TRIES=TRIES+1
        if [ $TRIES -eq $MAX_TRIES ]; then
            kdialog $DIALOG_TITLE –sorry "$TAR_HOST not responding, giving up…" 5
            exit 1
        fi
        kdialog $DIALOG_TITLE –passivepopup "$TAR_HOST not responding, waiting for ping ($TRIES)…" 5
        sleep $INTERVAL_TRIES
    done
fi

for db in ${DIRS[@]}
    do
        kdialog $DIALOG_TITLE –passivepopup "Starting $db" 5
        rsync -Prazvh –delete "${EXCLUDE[@]/#/–exclude=}" –copy-links –bwlimit=$MAX_BW -e ssh "$db" ${TAR_USER}@${TAR_HOST}:/backups
        kdialog $DIALOG_TITLE –passivepopup "Backup of $db has finished" 5
    done
kdialog $DIALOG_TITLE –passivepopup ‘Backup finished’ 5
kdialog $DIALOG_TITLE –yesno "Backup has finished. Shoudl I halt the remote machine ($TAR_HOST)?"
if [ $? -eq 0 ]; then
    kdialog $DIALOG_TITLE –passivepopup "Halting $TAR_HOST" 5
    echo ’sudo halt’ | ssh ${TAR_USER}@${TAR_HOST}
fi
 

Popularity: 11% [?]

post bzr+ssh group rw a umask

June 2nd, 2010

Filed under: linux — starenka @ 17:16
Tags: , , , , ,

Znáte ten pocit bezmoci, když nějakou věc rešíte už po třetí a pokaždý vás stojí 20 bodů IQ, máte pogrepovanej celej Gugl, zmateně a kuse se to snažíte natlačit do hlavy všem, který ještě maji náladu vás poslouchat a pořád nemůžete přijít na to, “jak jsem to sakra minule udělal”? Já jo. 

Pro mě už klasická situace. Máte server, na kterej x uživatelů s primarní grupou (řekněme vcs) pushuje repozitáře. Aby se zabránilo tomu, aby nově vytvořený branche a upravený soubory byly -w pro zmíněnou grupu, je třeba nastavit umask 0002. To je logický. Jenže kámen úrazu je v tom, že nastavení umasku v /etc/profile nepomáhá. Ano, pro někoho je to zřejmý, protože binárka bzr nespouští žádnej shell. Ááááchjo. Řešení je opravdu jednoduchý. Stačí vytvořit wrapper, kterej pustí umask a pak zavolá bazaar s parametrama, který na wrapper přišly. Čili něco jako:

starenka@xxx:~$ cat /usr/local/bin/bzr
#!/usr/bin/env bash
umask 0002
/usr/bin/bzr "$@"
 

PS. chtěl bych poděkovat ntz, za to, že mě trpělivě naved’ až ke slovu wrapper a já si vzpomněl, jak už jsem to dvakrát předtím řešil :)

Popularity: 16% [?]

post Google search results oldskul style

May 8th, 2010

Filed under: other, zeitgeist — starenka @ 12:03
Tags: , , , , ,

Jestli patříte mezi lidi, kterým redesign stránky s výsledkama na Google nesedí, je tu celkem jednoduchý řešení. Pokud váš prohlížeč podporuje vlastní CSS pro konkretní stránku, neni nic jednodušího než si “vrátit výsledky pěkně hned doleva, ty vole”. V Opeře stačí pravým tlačítkem na stránce -> Edit site preferences -> Display -> My stylesheet a v dialogu na výběr souboru vybrat vlastní CSS. Nějak jsem to dlouho netestoval, ale zdá se, že dva řádky úplně stačí.

#center_col { margin-left: 0 !important; }
#leftnav { right: 5px; }

Výsledek vypadá nějak takhle:

UPDATE: někde jsem viděl, že “starý hledání” funguje, pokud se za url dohodi &hl=all takže stačí jen upravit string, který se posílá z prohlížeče na Google (např. http://www.google.com/search?client=opera&rls=en&q=starenka+penis+size+vs+hulan+penis+size&sourceid=opera&ie=utf-8&oe=utf-8&hl=all. Nebo taky můžete použít bystroushaakuv GreaseMonkey skript.

Popularity: 24% [?]

post Python, php a ruby lint precommit hook pro Bazaar

March 6th, 2010

Filed under: programming — starenka @ 18:47
Tags: , , , , ,

Jsou situace, kdy prostě někdě neco ujede, někde se něco připlete a ne vždy to člověk v IDE bere na vědomí. Provádění syntax checku před komitem mi přijde jako docela dobrej nápad. Unit test a TDD křídla, který mi určitě rádi poví, že tohle už by mělo součástí testů atd. blatytyblaa prosím, aby mě nechali žít v bludu, že testy někdy prostě třeba nejsou. Hooky pro Bazaar se píšou fakt krásně, takže ho spíchnout je docela zábava. Hooky jsou normální pluginy, takže patří do ~/.bazaar/plugins. Komentovat těch pár řádek netřeba. V případě PHP a Ruby, kde se používá CLI, binárka a grep bude asi trošku skřípot na Windows, ale imho nebude problém to pořešit jinak (jsem línej a navíc mě to netíží). Bastlení zdar.

Popularity: 24% [?]

post Vetešnictví (bzrlist)

February 27th, 2010

Filed under: python — starenka @ 22:55
Tags: , , ,

Používáte Bazaar? Máte někde na serveru “repozitáře” a potřebujete občas rychle zjistit název projektu, jeji branch/push/merge url a shlédnout rychle log? Nechcete kvuli tomu rozjíždět nějakou megalomanskou věcičku ala Loggerhead, která navíc zobrazuje zdrojáky a tudíž musí být pod heslem? (Aby bylo jasno, Loggerhead je skvělá věc, ale pro vypsaní branchů a jejich url je to overkill). Pak jste tu…… správně. Postačí vám CGI a pár řádek v Pythonu. Nikdy jsem neměl (mimo jiných) grafický nadání, takže jestli vás to hodně mlátí do očí, poslužte si.

Popularity: 22% [?]

Next Page »
ruldrurd
© starenka 2oo7, cute alien monster by noizcut, original theme by Laurentiu Piron - customized by starenka | proudly powered by WordPress