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 Honzíkovo jablko

May 24th, 2009

Filed under: other — starenka @ 11:39
Tags: , , ,

Pořídil jsem si postarší lampičku. Ma 15 palců a je bílá. První hodiny byly opravdu krušný, jedno tlačítko na myši, pár proházenejch kláves, neschopnost vysunout cdrom (dík deepj), zběsilý mačkání ctrl+alt+space (yakuake) a alt+space (katapult), “ty-vole-tady-ani-neni-wget” - prostě Alenka v říši divů. Za den jsem si ale zvyknul a řekl jsem si, že si s tim ještě teda chvilku pohraju, než to dám do ložnice - koupil jsem to kvuli koukání filmů v ložnici (ma to přeci jen trošku větší display než EEEčko :D )
Zalíbilo se mi to natolik, že jsem upgradnul na OSX 10.4 a jal se víc prozkoumávat. Ovládání mi docela přešlo do krve a i ten alt+space “launcher” už tam je. Super. Menší problémy nastaly, když jsem chtěl přimountovat externí disk s ext3. Za komerční řešení se mi platit nechtělo (navíc fungovali jen na intel-based) a konzolí jsem přítelkyní nechtěl strašit. Takže hora k Mohamedovi. Linux HFS+ čte a zapisuje jedna báseň, takže bylo po problému. Dalším je USB 1.0 . Inu, kopírovat 40GB serilálů na disk se trošku protáhlo.
Poslední problém bylo vypnutí po stanoveným čase. Platit se mi nechce, widgety nefungovaly. Vzpoměl jsem si, že terminal psal “bash”. Dohledal jsem Fink, kterej portuje dost GNU apps pro Maca a pak už to bylo opravdu jednoduchý. Přes apt-get (!) jsem doinstaloval dialog a napsal jednoduchej skript, kterej jsem hodil na plochu. Kdyby byl zájem, vypadá to cca takhle:

#!/bin/bash
until [ $INPUT -ge 0 2>/dev/null ]; do
    INPUT=`dialog –stdout –inputbox ‘Za jak dlouho (minuty)?’ 7 40`
done
INTERVAL=$((INPUT*60))
sleep $INTERVAL
osascript -e ‘tell application "System Events" to sleep’

PS. Kdyby jste nědo měl lepší řešení, rád uvítám. KTHXBYE

PPS. Když jsem u těch jablek. Adamovo jablko je skvělej film.

Popularity: 22% [?]

post /var/log/head

March 29th, 2009

Filed under: linux — starenka @ 23:08
Tags: , ,

Opravdu zběžně pár střípků, který jsem nedávno potřeboval a sestrojil (ano, za mírných šťouchů jiných, kterým tímto děkuji).

přejmenování souborů v adresáři podle seznamu uloženém v souboru (dělal jsem pořádek v Red Dwarfu, no ;) )

current_files=(*); i=0; while read; do mv "${current_files[i++]}" "$REPLY"; done < ../list

promazání souborů starších 15ti dní (na můj boptnající bordel adresář)

find /junk/. -atime 15 -delete
Blogged with the Flock Browser

Popularity: 23% [?]

post hostrotator - změna hosts při joinutí specifického ESSID

January 7th, 2009

Filed under: linux — starenka @ 02:31
Tags: , , , , , , ,

Dost často potřebuju mít definovaný různý hostnames pro různý wifi sítě, ke kterým se připojuju. Problém, jak jistě tušíte, je v tom, že vetšina sítí má podobnej rozsah a tudíž hostname “milacek” na vaší domácí síti může v práci klidně směrovat na šéfův počítač. Nenabádám ke vzpourám, ale některý představy by se měli típnout už v zárodku. Aby jsem těmhle kolizím předešel, po každém připojení na wifi se mi k defaultním hosts přihodí ještě specifické pro danou síť. Samozřejmě to není převratná myšlenka, ale na amatérskýho krotitele tučňáků po necelým roce 24ek v ZOO nemůžete čekat víc. Ehm.

prekvizity:

  1. wifi je na wlan0 (změn si dle potřeby)
  2. v ~/hosts je:
    • minimálně soubor _hosts, kde jsou univerzální hosts (vaše hostname atd.)
    • soubor(y) s názvem ESSID, pro který chcete mít ještě další definovaný hostnames
  3. skript (níže) uložit, udělat spustitelným a zkopírovat pod rootem do /etc/network/if-up.d
#!/bin/sh
ssid=`iwconfig wlan0 | grep ESSID | cut -d\" -f2`

cp /home/starenka/hosts/_hosts /etc/hosts
if [ -f /home/starenka/hosts/"$ssid" ];
     then echo "
\n#==$ssid specific==\n" >> /etc/hosts; cat /home/starenka/hosts/"$ssid" >> /etc/hosts
fi

Popularity: 22% [?]

post Proxy checker

January 2nd, 2009

Filed under: web — starenka @ 13:40
Tags: , ,

Manualní čekování a dohledávání proxyn je opravdu strašnej opruz. Díky zlosynově skriptu, je to ale minulost. Dovolil jsem si použít svoje bash neskills a vytřídit jen funkční proxy spolu se státem odkud pochází (rád se koukám na BBC)

perl proxy-check.pl > /junk/list && grep found /junk/list | while read line; do proxy=$(line | cut -d" " -f5); echo -n $proxy; geoiplookup $(echo $proxy | cut -d":" -f1) | cut -d"," -f2; done

Popularity: 17% [?]

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