Skripta za azuriranje NetBSD koristeci snapshot arhive

Skripta za azuriranje NetBSD koristeci snapshot arhive

offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

Skripta sluizi sa preuzimanje kompresovanih arhiva sa ftp sajta i azuriranje sistema. Moze da koristi onima koji azuriraju svoj NetBSD sistem koristici snapshot-ove. U skripti sam u pocetku koristio corpocesse pa zbog toga ksh, lenj sam da to prebacim u Bourne shell skriptu. Smile
#!/bin/ksh
#    getsets.ksh v.0.2
#    dalibor Dot gudzic At gmail Dot com
#    www.bsdserbia.org
#    11/2009
#

DWNLD_DIR="/home/soxxx/netbsd_sets"
FTP_SAJT="http://nyftp.netbsd.org"
FTP_OPCIJE="ftp -o -"
FTP_RELENG="pub/NetBSD-daily"
TAG="netbsd-5"
VERZIJA="$(awk -F\' '/BUILDID/ { print $2 }' /etc/release)"

set -A SETOVI "base.tgz comp.tgz etc.tgz kern-GENERIC.tgz man.tgz misc.tgz tests.tgz \
            text.tgz xbase.tgz xcomp.tgz xetc.tgz xfont.tgz xserver.tgz"

f_koriscenje() {
cat <<EOF

Pokretanje skripte: ${0##*/} <getsets | installkernel | installsets | etcupdate | help>

    getsets          -    Preuzimanje setova sa ftp servera
    installkernel    -    Ekstraktovanje i instaliranje GENERIC kernela
    installsets      -    Instaliranje setova
    etcupdate        -    Azuriranje, spajanje konfiguracionih fajlova u /etc direktorijumu
    help             -    Prikaz pravilnog pokretanja skripte

Osim u slucaju preuzimanja setova, za pravilno izvrsenje skripte potrebno je skriptu pokrenuti sa:

    sudo ${0##*/} parametar

EOF
}

f_provera_greske() {
    greska=$?
    print ""
    test "greska" -eq "$1" && print "$2" && exit $1
}

if [[ $# -ne 1 ]]
then
    print "Greska: potreban je (samo) jedan parametar za izvrsenje skripte jebi ga."
    f_koriscenje
    exit 1
fi

case $1 in
    getsets)
        NOVA_VERZIJA=$(ftp -o - $FTP_SAJT/$FTP_RELENG/$TAG/ | \
                            awk '{ if(match($0, "[0-9]+Z")) {
                                    print substr($0, RSTART, RLENGTH)
                                }
                            }' | sort -r | head -1)

        if [[ $NOVA_VERZIJA == $VERZIJA ]]; then
            print "Yo, nema novih setova za azuriranje, prekidam skriptu."
            exit 0
        else
            VERZIJA=$NOVA_VERZIJA
            print "Nova verzija je: $VERZIJA"
            FTP_PUTANJA="$FTP_RELENG/$TAG/$VERZIJA/i386/binary/sets"

            print -n "Proveravamo dali postoji direktorijum 'i386'..."
           
            ftp -o - $FTP_SAJT/$FTP_RELENG/$TAG/$VERZIJA | \
            awk '/i386/ {tu_je=1}
                    END{ if(tu_je)
                        {
                            print " prisutan na casu, nastavljamo."
                        }else{
                            print " odsutan. Neopravdani izostanak."
                            exit 33;
                        }
                    }'
            f_provera_greske 33 "Prekidam skriptu."
       
            print "Proveravamo unose..."

            ftp -o - $FTP_SAJT/$FTP_PUTANJA/ | \
            awk -v S="$SETOVI" 'BEGIN {
                        split(S " SHA512 MD5", niz_setova)
                    }
                    {
                        for(i in niz_setova) {
                            if($0 ~ niz_setova[i]) {
                                nadjeno_niz[niz_setova[i]]++
                            }
                        }
                    }
                    END {
                        for(j in niz_setova) {
                            if(niz_setova[j] in nadjeno_niz) {
                                print "Set " niz_setova[j] " je na serveru."
                            } else {
                                print "Set " niz_setova[j] " nije pronadjen na serveru."
                                n++
                            }
                        } if(n>0)
                            exit 44;
                    }'
            f_provera_greske 44 "Neki setovi nisu nadjeni. Prekidam skriptu."

            if [[ $(pwd) != $DWNLD_DIR ]]; then
                print "Prelazim u $DWNLD_DIR"
                cd $DWNLD_DIR
                f_provera_greske 1 "Greska prilikom prelaska u $DWNLD_DIR."
            fi

            for SET in ${SETOVI[@]}; do
                    print "Skidam set ==> $SET..."
                ftp $FTP_SAJT/$FTP_PUTANJA/$SET
                f_provera_greske 1 "Greska prilikom preuzimanja seta $SET."
            done
        fi
    ;;
    installkernel)
        if [ -f $DWNLD_DIR/kern-GENERIC.tgz ]; then
            print "Cuvamo stari kernel kao netbsd.old..."
                /bin/mv /netbsd /netbsd.old
                f_provera_greske 1 "Greska prilikom kopiranja kernela."

            print "Ekstraktujemo GENERIC kernel u / ..."
                /usr/bin/progress -zf $DWNLD_DIR/kern-GENERIC.tgz /bin/tar -C / -xpf -
                f_provera_greske 1 "Greska prilikom ekstraktovanja kernela."

            print ""
            print -n "Novi kernel ekstraktovan, restart sistema za ucitavanje novog kernela ( da/ne ): "

            while read ODGOVOR; do
            case $ODGOVOR in
                [Dd]|[Dd][Aa])
                    sync; sync; shutdown -r now ;;
                [Nn]|[Nn][Ee])
                    print "Novi kernel ce se ucitati prilikom sledeceg podizanja sistema."
                    exit ;;
                *)
                    print "Odgovori sa [d]a ili [n]e"
                    continue ;;
            esac
        done
        else
            print "kern-GENERIC ne postoji" && exit 1
        fi
    ;;
    installsets)
        print "Proveravamo validnost arhiva:"; print ""
        for SET in ${SETOVI[@]}; do
            [[ $SET == "kern-GENERIC.tgz" ]] && continue
            print -n "Testiram arhivu ==> $SET ..."
                /bin/tar -tzvf $DWNLD_DIR/$SET >/dev/null 2>&1 && print " moze da prodje."
                f_provera_greske 1 " shajt, nesto smrdi u arhivi $SET. Prekidam skriptu"
        done
        print
        print "Sve arhive su (valjda) ispravne. :-) Nastavljamo dalje..."

        for SET in ${SETOVI[@]}; do
            [[ ($SET == "etc.tgz") || ($SET == "xetc.tgz") || ($SET == "kern-GENERIC.tgz") ]] && continue
            print "Ekstraktujem set ==> $SET..."
                /usr/bin/progress -zf $DWNLD_DIR/$SET /rescue/tar -C / -xpf -
                f_provera_greske 1 "Greska prilikom ekstraktovanja seta $SET."
        done
    ;;
    etcupdate)
        /usr/sbin/etcupdate -s $DWNLD_DIR/etc.tgz -s $DWNLD_DIR/xetc.tgz
    ;;
    help)
        f_koriscenje
        ;;
    *)
        print ""
        print "Greska: nepoznati perametar $1"
        print ""
        f_koriscenje
        exit 1
    ;;
esac



Skripta "u akciji":

Skidanje setova:
nbsd$ ./getset.script getsets                                                                               
Nova verzija je 200909140000Z
Prelazim u /home/soxxx/netbsd_sets
Skidam set ==> base..tgz..
Requesting http://nyftp.netbsd.org/pub/NetBSD-daily/netbsd-5/200909140000Z/i386/binary/sets/base.tgz
100% |*****************************************************************************| 26241 KiB  189.47 KiB/s    00:00 ETA
26870857 bytes retrieved in 02:18 (189.47 KiB/s)
Skidam set ==> comp.tgz...
Requesting http://nyftp.netbsd.org/pub/NetBSD-daily/netbsd-5/200909140000Z/i386/binary/sets/comp.tgz
100% |*****************************************************************************| 37822 KiB  189.44 KiB/s    00:00 ETA
38730622 bytes retrieved in 03:19 (189.44 KiB/s)
Skidam set ==> etc.tgz...
Requesting http://nyftp.netbsd.org/pub/NetBSD-daily/netbsd-5/200909140000Z/i386/binary/sets/etc.tgz
100% |*****************************************************************************|   367 KiB  157.78 KiB/s    00:00 ETA
376257 bytes retrieved in 00:02 (157.75 KiB/s)
Skidam set ==> kern-GENERIC.tgz...
Requesting http://nyftp.netbsd.org/pub/NetBSD-daily/netbsd-5/200909140000Z/i386/binary/sets/kern-GENERIC.tgz
 32% |************************         

Instaliranje kernela:
nbsd$ sudo ./getset.script installkernel
Cuvamo stari kernel kao netbsd.old...
Ekstraktujemo GENERIC kernel u / ...
100% |*****************************************************************************| 11470 KiB   41.90 MiB/s    00:00 ETA

Novi kernel ekstraktovan, restart sistema za ucitavanje novog kernela ( da/ne ): n
Novi kernel ce se ucitati prilikom sledeceg podizanja sistema.

Instaliranje setova:
nbsd$ sudo ./getset.script installsets
Ekstraktujem set ==> base.tgz...
100% |**************************************************************************************| 77550 KiB    9.82 MiB/s    00:00 ETA
Ekstraktujem set ==> comp.tgz...
100% |**************************************************************************************|   130 MiB    9.22 MiB/s    00:00 ETA
Ekstraktujem set ==> kern-GENERIC.tgz...
100% |**************************************************************************************| 11470 KiB   36.95 MiB/s    00:00 ETA
Ekstraktujem set ==> man.tgz...
100% |**************************************************************************************| 50790 KiB   13.91 MiB/s    00:00 ETA
Ekstraktujem set ==> misc.tgz...
100% |**************************************************************************************| 12310 KiB   23.33 MiB/s    00:00 ETA
Ekstraktujem set ==> tests.tgz...
100% |**************************************************************************************|  8410 KiB    5.73 MiB/s    00:00 ETA
Ekstraktujem set ==> text.tgz...
100% |**************************************************************************************|  9830 KiB   18.97 MiB/s    00:00 ETA
Ekstraktujem set ==> xbase.tgz...
 82% |**********************************************************************



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
Ko je trenutno na forumu
 

Ukupno su 778 korisnika na forumu :: 46 registrovanih, 6 sakrivenih i 726 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 1567 - dana 15 Jul 2016 19:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 8u47, A.R.Chafee.Jr., aleksandar_tatic, aligrudici, Atomski čoban, borko_marjanovic, comi_pfc, dekir, dexus, doom83, dragoljub11987, dragon986, Filodendron, ILGromovnik, ivan979, ivica976, Kožedub, krunomiletic5, Logic005, ltcolonel, Markobg, mačković, MB120mm, Mercury2, MiG-29M2, Milan Kosić, milan.ivancevic, milandlc84.wow, milimoj, miracoric28, nesa1962, nesic1, pedja63, pein, proka89, RADOVAN.S, riva2, rkekoke, rovac, shone34, Vlad000, vobo, voja64, weez, wizzardone, zgembo