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 848 korisnika na forumu :: 52 registrovanih, 7 sakrivenih i 789 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Arsenije, babaroga, bavar357, bbogdan, Ben Roj, bojcistv, Boris90, CrazySerb_MLD, cvrle312, dankisha, francis begbie, goxsys, Joja, JOntra, kairos, kaptain, Koca Popovic, komkom, ladro, Magistar78, Mendonca, MiG-29M2, Milan A. Nikolic, naki011, Nemanja.M, nenooo, nizam, novator, operniki, opt1, Panter, panzerwaffe, proka89, raptorsi, rkekoke, Rocker, savaskytec, shaja1, Skywhaler, Sr.Stat., stegonosa, Stoilkovic, strn, Stuka76, Toni, Vlajman1957, xJeremijAx, zdrebac, Zvrk, zxstole, Čivi