OpenWrt/Užitečné skripty

Z Wikiknih

Přejít na: navigace, hledání

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

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

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

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.

Varování 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
    }

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

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