02 Maja 2025 16:01:55
Nawigacja
· Strona Główna
· Forum

· Tomato by Shibby
· FreshTomato


Wątki na forum
Najnowsze dyskusje
· Router do światłow...
· r6400v2 bład przy u...
· [sprzedam] Asus RT-A...
· Netia IPv6
· Multiroom N z wykorz...
· [S] Ubiquity Edgerou...
· [MOD] FreshTomato-AR...
· Nowe routery: UX, UC...
· asus rt-ax86u pro z ...
· Zmiana OpenVPN na wi...
· [S]UBIQUITI EdgeRout...
· Zaawansowana konfigu...
· ByPass VPN dla wybra...
· [MOD] FreshTomato-MI...
· Komputer Serwer
· Ciągle rozłączani...
· Wersje Freshtomato d...
· FreshTomato- WAN inn...
· Pojemniki na FreshTo...
· [K] Obudowę Kompute...
Najpopularniejsze obecnie wątki
· Router do świat... [7]
· r6400v2 bład prz... [3]
Ankieta
Jaki procesor posiada twój router?

Broadcom MIPSEL
Broadcom MIPSEL
36% [152 głosów]

Broadcom ARM
Broadcom ARM
52% [219 głosów]

Atheros
Atheros
5% [22 głosów]

Marvell
Marvell
1% [4 głosów]

Ralink
Ralink
1% [3 głosów]

Intel/AMD/VIA
Intel/AMD/VIA
1% [5 głosów]

Żaden z powyższych
Żaden z powyższych
4% [15 głosów]

Ogółem głosów: 420
Musisz zalogować się, aby móc zagłosować.
Rozpoczęto: 02/02/2015 09:38
Twoje IP
3.140.184.21
Zobacz wątek
OpenLinksys » :: OPROGRAMOWANIE :: » OpenWrt - firmware
 Drukuj wątek
Yntelygentny backup routera, cz. I
jejek
Mam wizję wykonywania backupów OpenWRT w takich trzech krokach:

1. Zrzut listy zainstalowanych pakietów.
2. Zrzut zmienionych/dodanych plików z partycji systemowej
3. Archiwizacja reszty bambetli typu /mnt, /opt czy jak tam macie.

Dziś punkt pierwszy. Wyskrobałem skrypt, który pobiera listę zainstalowanych pakietów. Nastepnie przegląda zależności i usuwa wszystkie zależne (np. libtorrent jeśli jest zainstalowany rtorrent, bo przy instalacji tego drugiego biblioteka i tak się zainstaluje). Może nie jest to takie ważne, ale po co ma sypać komunikatami, że pakiet już jest. Na koniec usunięcie pakietów zawartych w obrazie (tutaj trzeba wpisać swoją listę, jest na początku skryptu). Wynikiem jest skrypt, który na czystej instalacji robi stan z czasu backupu. Mam nadzieję, że jakoś jasno to objaśniłem.

Wymagania są opisane na początku skryptu, bash (ze względu na użycie tablic) i link, który i tak sprawdzam. Poza tym narzędzia busyboxa, które powinny być. Opkg również.

używamy: pakiety.sh [plik]

Jak się spodoba, to pokażę skrypt realizujący drugi punkt, ale muszę go jeszcze ogarnąć, bo wstyd pokazać ;)

Skrypt w załączniku. Dałbym obrazek jakbym wiedział jak ;)
Zdrówko.


--Edit: Nie chce mi przyjąć załącznika (.sh ani .zip), wkleiłem w treść ale szlag trafił wcięcia.
A tutaj sformatowane: http://wklej.org/id/274340/.


#!/bin/bash

# Użycie: pakiety.sh [plik wynikowy]
#
# Uwaga! Ze względu na wykorzystanie tablic wymagana jest powłoka bash.
# Trzeba zainstalować stosowny moduł
#
# Jeśli nie działa potok  while read do; ... done < <( ... )
# ( pojawia się komunikat, że nie ma urządzenia /dev/fd/62 )
# to trzeba polinkować w następujący sposób:
#   ln -s /proc/self/fd /dev/fd
#


# Plik z zależnościami pakietów. Zajrzyj do /etc/opkg.conf
PLIK_PKG=/tmp/opkg-lists/snapshots

# Tablica wbudowanych w obraz pakietów
pak_wbudowane=(base-files-brcm-2.4 bridge busybox dnsmasq dropbear firewall iptables kernel kmod-diag kmod-fs-ext2 kmod-fs-ext3 kmod-ipt-nathelper kmod-switch kmod-usb-core kmod-usb-storage kmod-usb-uhci-iv kmod-usb2 libgcc mtd ntpclient nvram opkg ppp ppp-mod-pppoe swap-utils uci uclibc)

# Czy jest katalog /dev/fd ?
if [ ! -d /dev/fd ] then
  ln -s /proc/self/fd /dev/fd
fi

indeks_pakietu () {
  local nazwa=$1
  local __indeks=$2
  local i
  local ret=-1

  #echo "Param: $nazwa"

  for (( i=0; i<${#pakiety[@]}; i+=1 )); do
    #echo "$i::${pakiety[$i]}  $nazwa  "
    if [ "$nazwa" == "${pakiety[$i]}" ] then
      ret=$i
    fi
  done

  #echo $ret
  eval $__indeks="$ret"
}

usun_pakiet () {
  local indeks=$1
  local i

  for (( i=$indeks; i<${#pakiety[@]}-1; i+=1 )); do
    pakiety[$i]=${pakiety[$i+1]}
  done
  unset pakiety[$[${#pakiety[@]}-1]]
}

if [ ! -f "$PLIK_PKG" ] then
  opkg update || { echo "Nie potrafię uaktualnić listy pakietów."; exit 5; }
  if [ ! -f "$PLIK_PKG" ] then
    # Mimo pobrania pliku nadal go nie ma %-)
    echo "Nieprawidłowa konfiguracja, sprawdź ustawienie PLIK_PKG."
    exit 5
  fi
fi

for naz_pakietu in `opkg list_installed | awk '{print $1}'`
do
  wsk=${#pakiety[@]}
  pakiety[$wsk]=$naz_pakietu
done

echo "Zainstalowanych pakietów: ${#pakiety[@]}"

echo "Przeglądanie zależności"

# Tablica znaczników pakietów do usunięcia
for ((i=0; i<${#pakiety[@]}; i+=1)); do
  czy_usunac[$i]=0
done

# Przeglądanie pliku zależności i zaznaczenie pakietów zależnych
# od zainstalowanego pakietu do skasowania.
while read -a linia; do
  indeks_pakietu ${linia[0]} ind
  printf "\rSprawdzam: %-36s  zależności: %2d " ${linia[0]} $[${#linia[@]}-1]
  if [ $ind -ge 0 ] then
    for ((i=1; i<${#linia[@]}; i+=1)); do
      indeks_pakietu ${linia[$i]} ind
      czy_usunac[$ind]=1
    done
  fi
done < <(awk '\
/^[ \t]*$/              {pakiet="@@@"} \
/^Package:/           {pakiet=$2} \
/^Depends:/        {zalezne=$0; gsub (/^Depends:/, "", zalezne); gsub (/\(.*\)/, "", zalezne); gsub (/,/, " ", zalezne); gsub (/[ \t]+/, " ", zalezne); print pakiet " " zalezne } \
' "$PLIK_PKG" )


# Teraz usuwam zależne pakiety. Koniecznie od końca!
echo -e "\nUsuwam pakiety z zależności"
for ((i=$[${#czy_usunac[@]}-1] i>=0; i-=1)); do
  if [ ${czy_usunac[$i]} -eq 1 ] then
    printf "\rUsuwam pakiet zależny %-36s" ${pakiety[$i]}
    usun_pakiet $i
  fi
done


echo -e "\nUsuwam pakiety wbudowane w obraz"

for (( i=0; i<${#pak_wbudowane[@]}; i+=1 )); do
  naz=${pak_wbudowane[$i]}
  indeks_pakietu $naz ind
  if [ $ind -ge 0 ] then
    printf "\rUsuwam pakiet wbudowany %-36s" ${pakiety[$ind]}
    usun_pakiet $ind
  fi
done

echo -e "\nNo i to co zostało jako backup\n"
if [ -n "$1" ] then
  echo -e "# Backup pakietów z dnia `date +'%d-%m-%Y'`\n" > "$1"
fi

# Jak nie będzie parametru wywołania skryptu $1 to tee się nie wyłoży. I dobrze.
for (( i=0; i<${#pakiety[@]}; i+=1 )); do
  echo "opkg install ${pakiety[$i]}" | tee -a $1
done



Edytowany przez jejek dnia 04-02-2010 23:01
 
Przejdź do forum
Zaloguj
Wprowadź adres e-mail lub nazwę użytkownika

Hasło



Nie masz jeszcze konta? Zarejestruj się.

Zapomniałeś/aś hasła?
Aktualnie online
· Gości online: 69

· Użytkowników online: 0

· Łącznie użytkowników: 24,126
· Najnowszy użytkownik: goldi111
Czat
Musisz się zalogować, aby opublikować wiadomość.

servee
24-01-2025 18:18
Światłowód + mediakonwenter. Ekranowana skrętka nie jest wymagana, taką sytuację już zastałem. Zamierzam ją wymienić na zwykłą. Da to coś?

shibby
17-01-2025 07:45
a ta skrętka ekranowana o której piszesz to jakiś wkopany przewód do bramy/furtki/kamer
y zewn? Jak tak to jego też przez zabezpieczenie podepnij.

shibby
17-01-2025 07:43
no to pora zabezpieczyć kable LAN zabezpieczeniami przeciwprzepięciow
ymi - tanio nie będzie. Jak przychodzi ci internet? Skrętką czy światłem? Jak skrętką to zacząłbym od tego.

servee
12-01-2025 12:52
Ponownie padły mi wszystkie porty sieciowe w routerze - to już 3-ci w 6 m-cy. Podejrzany to ekranowana, nieuziemiona skrętka - 12mb. Czy jest to możliwe?

dawidt
21-12-2024 01:09
siema Grin

Maniek91PL
06-11-2024 22:37
dzięki !Grin

maxikaaz
29-10-2024 14:27
@Maniek91PL - Administration=> Admin Access, i tam masz "Allow Wireless Access" do zaznaczenia

Maniek91PL
26-10-2024 22:07
siemka! ktoś przypomni co się ustawiało jeśli nie mogę wejść od strony wifi do tomato? od lan działa

overflow2
04-10-2024 17:34
Kupowałem Asusy n10u albo n12d1 ale nie widzę ich, chyba już nie produkują, Chodzi o coś nowego i taniego. Transfery niewielkie.

maxikaaz
04-10-2024 09:38
@overflow2 patrząc po dostępności funkcji w nowych kompilacjach, to chyba nawet WRT54G/GL jeszcze ma OpenVPN, albo jakiś odpowiednik... zależy, na jakie transfery liczysz.

115,679,411 unikalnych wizyt