OpenWrt/Užitečné skripty

Z Wikiknih

Automatické připojení oddílů do správného adresáře[editovat | editovat zdroj]

Skript projde všechny automaticky připojené oddíly a hledá soubor v kořenovém adresáři. V tomto souboru je uložená cesta, kam má být oddíl připojen. Oddíl se na nové místo nepřipojí v případě, že soubor neexistuje, adresář pro připojení nexistuje nebo není prázdný. Oddíly zůstanou připojeny i na starém místě.

#!/bin/sh

ID=disc.id
PART=$(ls /mnt)

for I in $PART; do
    [[ -r /mnt/$I/$ID ]] && {
        POINT=$(cat /mnt/$I/$ID)
        [[ -d $POINT ]] && ls $POINT/* || mount --bind /mnt/$I $POINT
    } >> /dev/null
done

Kopírování souboru při startu[editovat | editovat zdroj]

Skript zjistí zda existují adresáře a pak zkopíruje obsah prvního do druhého včetně uživatelských práv. Toto je vhodné například pro uložení uživatelských konfigurací uživatele root. Pokud zdrojový adresář nepodporuje uživatelská práva můžeme odstranit přepínač -p v příkazu cp.

Pokud budou tato data umístěna na externím disku, mohou být hesla uložená v textových souborech snadno čitelná při připojení tohoto disku k jinému počítači.

#!/bin/sh

FROM=/opt/etc/root
TO=/tmp

[[-d $FROM]] && [[-d $TO]] && {
    cp -p $FROM/* $TO
    cp -p $FROM/.* $TO
    }

Mazaní souborů menších než[editovat | editovat zdroj]

Protože příkaz find v busyboxu nepodporuje hledání podle velikosti, můžeme toto vyřešit instalaci balíčku z Optware nebo následujícím skriptem

#!/bin/sh

[[$# -eq 0]] && {
    echo At least one parameter required
    echo Usage: rmshorter bytes [path]
    exit 1
    }

echo $1 | grep -E "^[0-9]*$" > /dev/null || {
    echo First parameter must be number
    echo Usage: rmshorter bytes [path]
    exit 1
    }

[["$2" == ""]] || [[-d $2]] || {
    echo Bad directory
    echo Usage: rmshorter bytes [path]
    exit 1
    }

DIRE="$2"
CONT=$(ls -1 $DIRE)
[["$DIRE" == ""]] && DIRE=$(pwd)
echo $DIRE | grep -E "/$" || DIRE="$DIRE/"

for I in $CONT; do {
    [[ -f $DIRE$I ]] && {
        LEN=$(ls -l $DIRE$I | grep -o -E "[0-9]*\ (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)" | grep -o -E "[0-9]*")
        [[ $LEN -lt $1 ]] && rm -f $DIRE$I
        }
    }
done