#!/bin/bash u=$(whoami) if [ "$u" != "root" ] then echo -e "\n Potrebno je biti root!\n" exit fi clear echo "**************************************************" echo "SKRIPTA ZA KOPIRANJE OIB-a IZ ISVU-a za prijenos u" echo " LDAP imenik" echo " inacica 1.2 26.lipnja, 2013" echo echo " lcavara (at) ttf.hr" echo echo "Ova skripta trazi u LDAP imeniku studente i" echo "djelatnike za koje nedostaje OIB i traži za" echo "njih OIB-e ako postoje u ISVU, te stvara datoteku" echo "s listom formata uid;OIB pogodnu za upis u LDAP" echo "imenik (iskoristite za to perl skriptu 'dodaj_oib.pl'" echo "koju mozete preuzeti s web stranice:" echo echo "http://www.aaiedu.hr/download/dodaj_oib.pl.gz" echo echo "Trebate imati pripremljenu datoteku" echo "ISVU_djelatnici.txt ili ISVU_studenti.txt ili obje" echo echo "ISVU_djelatnici.txt kreirati u ISVU modulu" echo "Administrator - sa zvjezdicom (*) odabrati sve," echo "[ova skripta ce selektirati one ciji OIB je potreban]" echo "s F6 kreirati listu i pohraniti u datoteku." echo "Lista ima format: BROJ#Ime#Prezime#OIB#JMBG####..." echo echo "ISVU_studenti.txt kreirati u ISVU modulu" echo "Studij i studenti (odaberu se Maticni podaci" echo "studenta - sa zvjezdicom (*) odabrati sve," echo "[ova skripta ce selektirati one ciji OIB je potreban]" echo "s F6 kreirati listu i pohraniti u datoteku." echo "Lista ima format: JMBAG#OIB#JMBG#Prezime#Ime#####..." echo echo "Preporuka: napravite sigurnosnu kopiju LDAP imenika" echo "prema uputi na http://www.aaiedu.hr/backup.html" echo "**************************************************" read -ep "Stisnite Enter za nastavak ili Ctrl+C za izlaz " a d="ISVU_djelatnici.txt" s="ISVU_studenti.txt" SLAPCAT=$(mktemp /tmp/SLAPCAT_SD.XXXXXXXXXX) [ -f $SLAPCAT ] || read -ep "Greska u liniji 51, stisnite Ctrl+C za izlaz" a SLAPCAT_PRIVR=$(mktemp /tmp/SLAPCAT_PRIVR.XXXXXXXXXX) [ -f $SLAPCAT_PRIVR ] || read -ep "Greska u liniji 53, stisnite Ctrl+C za izlaz" a JMBG=$(mktemp /tmp/JMBG_SD.XXXXXXXXXX) [ -f $JMBG ] || read -ep "Greska u liniji 55, stisnite Ctrl+C za izlaz" a ISVU_D=$(mktemp /tmp/ISVU_D.XXXXXXXXXX) [ -f $ISVU_D ] || read -ep "Greska u liniji 57, stisnite Ctrl+C za izlaz" a ISVU_S=$(mktemp /tmp/ISVU_S.XXXXXXXXXX) [ -f $ISVU_S ] || read -ep "Greska u liniji 59, stisnite Ctrl+C za izlaz" a UIDS_B=$(mktemp /tmp/UIDS_B.XXXXXXXXXX) [ -f $UIDS_B ] || read -ep "Greska u liniji 61, stisnite Ctrl+C za izlaz" a UIDS_JMBG=$(mktemp /tmp/UIDS_JMBG.XXXXXXXXXX) [ -f $UIDS_JMBG ] || read -ep "Greska u liniji 63, stisnite Ctrl+C za izlaz" a UIDS_JMBG_B=$(mktemp /tmp/UIDS_JMBG_B.XXXXXXXXXX) [ -f $UIDS_JMBG_B ] || read -ep "Greska u liniji 65, stisnite Ctrl+C za izlaz" a BEZ_OJ=$(mktemp /tmp/BEZ_OJ.XXXXXXXXXX) [ -f $BEZ_OJ ] || read -ep "Greska u liniji 67, stisnite Ctrl+C za izlaz" a UIDS_OIBS=$(mktemp /tmp/UIDS_OIBS.XXXXXXXXXX) [ -f $UIDS_OIBS ] || read -ep "Greska u liniji 69, stisnite Ctrl+C za izlaz" a UIDS_OIBS_FINAL=$(mktemp /tmp/UIDS_OIBS_FINAL.XXXXXXXXXX) [ -f $UIDS_OIBS_FINAL ] || read -ep "Greska u liniji 71, stisnite Ctrl+C za izlaz" a REMOVE_PARAGRAPH=$(mktemp /tmp/REMOVE_PARAGRAPH.XXXXXXXXXX) [ -f $REMOVE_PARAGRAPH ] || read -ep "Greska u liniji 73, stisnite Ctrl+C za izlaz" a NEUSKLADJENOST=$(mktemp /tmp/NEUSKLADJENOST.XXXXXXXXXX) [ -f $NEUSKLADJENOST ] || read -ep "Greska u liniji 75, stisnite Ctrl+C za izlaz" a slapcat > $SLAPCAT || read -ep "Greska u liniji 77, stisnite Ctrl+C za izlaz" a echo if [[ -f $SLAPCAT && -s $SLAPCAT ]] ;then echo else echo -e "\nPrivremena testna kopija LDAP imenika $SLAPCAT nije mogla biti kreirana" cd /tmp && rm NEUSKLADJENOST.* SLAPCAT_SD.* SLAPCAT_PRIVR.* JMBG_SD.* ISVU_D.* ISVU_S.* UIDS_B.* UIDS_JMBG.* UIDS_JMBG_B.* BEZ_OJ.* UIDS_OIBS.* UIDS_OIBS_FINAL.* 2>/dev/null && cd - 1>/dev/null while : do echo read -ep "Greska u redu 81, stisnite Ctrl+C za izlaz " a done fi ; grep 'uid=\|OIB: NONE' $SLAPCAT|grep -B1 OIB|grep uid|sed 's/dn: uid=\|,.*$//g' >$UIDS_B grep 'uid=\|JMBG' $SLAPCAT|grep -B1 JMBG|sed 's/dn: uid=\|,.*$\|hrEduPersonUniqueNumber: JMBG: //g'|grep -v '^--'|paste - - >$UIDS_JMBG for a in $(cat $UIDS_B); do grep -w $a $UIDS_JMBG;done >$UIDS_JMBG_B u=$(grep 'uid=' $SLAPCAT|wc -l) bo=$(cat $UIDS_B|wc -l) j=$(cat $UIDS_JMBG|wc -l) perl -000 -ne 'print if /OIB: NONE/m' $SLAPCAT|perl -000 -ne 'print unless/JMBG/m' >$REMOVE_PARAGRAPH cat $REMOVE_PARAGRAPH|grep displayName|sed 's/displayName: //g' >$BEZ_OJ n=$(cat $BEZ_OJ|wc -l) clear echo "Testom je nadjeno da u LDAP imeniku ima ukupno $u korisnika," echo "s upisanim JMBG-om $j." echo "Bez upisanog OIB-a je $bo korisnika" read -ep "Stisnite Enter za nastavak ili Ctrl+C za izlaz" a perl -000 -ne 'print if /OIB/m' $SLAPCAT|perl -000 -ne 'print unless /OIB: NONE/m'|perl -000 -ne 'print unless /hrEduPersonUniqueNumber: OIB:/m'|grep displayName|sed 's/displayName: //' >$NEUSKLADJENOST m=$(cat $NEUSKLADJENOST|wc -l) if [[ -s $NEUSKLADJENOST ]] ; then { echo echo "Postoji neuskladjenost hrEduPersonUniqueNumber i onog unesenog" echo "u atribut hrEduPersonOIB za $m korisnika" read -ep "Stisnite Enter, da vidite listu" a echo cat $NEUSKLADJENOST echo echo "skripta koja ispravlja tu vrstu nepravilnosti u imeniku ustanove" echo "te upute za njeno pokretanje, dostupna je na adresi:" echo echo "http://www.aaiedu.hr/faq_neuskladjen_oib.html" echo read -ep "Stisnite Enter za nastavak ili Ctrl+C za izlaz" a } fi clear if [[ -s $BEZ_OJ ]] ; then { echo -e "\nNema upisanog ni OIB-a ni JMBG-a $n korisnika," echo "tim korisnicima trebat ce OIB upisati rucno!" read -ep "Stisnite Enter, da vidite listu za rucni upis " a echo cat $BEZ_OJ echo perl -000 -ne 'print unless /OIB: NONE/ && !/JMBG/m' $SLAPCAT >$SLAPCAT_PRIVR && grep 'uid=\|OIB: NONE' $SLAPCAT_PRIVR|grep -B1 OIB|grep uid|sed 's/dn: uid=\|,.*$//g' >$UIDS_B grep 'uid=\|JMBG' $SLAPCAT_PRIVR|grep -B1 JMBG|sed 's/dn: uid=\|,.*$\|hrEduPersonUniqueNumber: JMBG: //g'|grep -v '^--'|paste - - >$UIDS_JMBG for a in $(cat $UIDS_B); do grep -w $a $UIDS_JMBG;done >$UIDS_JMBG_B } fi echo -e "\nDa li postoji datoteka s listom djelatnika\n(kreirana odabiranjem * za osobu u ISVU modulu Administrator)?" echo "Ako postoji unesite stazu do datoteke s tom listom:" read -e -i "$PWD/$d" d; echo -e "\nDa li potsoji datoteka s listom studenata\n(kreirana odabiranjem * za maticne podatke studenta u ISVU modulu Studij i studenti)?" echo -e "Ako postoji unesite stazu do datoteke s tom listom:" read -e -i "$PWD/$s" s; echo fd=1 fs=1 [[ -f $d && -s $d ]] && echo "$d nadjena" && cp $d $ISVU_D 2>&1 > /dev/null|| echo "datoteka s ISVU listom OIB-a djelatnika $d nije nadjena" && fs=0 [[ -f $s && -s $s ]] && echo "$s nadjena" && cp $s $ISVU_S 2>&1 > /dev/null|| echo "datoteka s ISVU listom OIB-a studenata $s nije nadjena" && fs=0 echo if [[ -s $d ]] ;then echo "OIB za djelatnike bit ce uvezeni iz ISVU u LDAP imenik" fd=1 else echo "OIB za djelatnike NECE bit uvezeni iz ISVU u LDAP imenik" fd=0 fi if [[ -s $s ]] ;then echo -e "OIB za studente bit ce spremno za uvoz iz ISVU u LDAP imenik" fs=1 else echo "OIB za studente NECE bit ce spremno za uvoz iz ISVU u LDAP imenik" fs=0 fi if [[ $fd = 0 && $fs = 0 ]];then cd /tmp && rm NEUSKLADJENOST.* REMOVE_PARAGRAPH.* SLAPCAT_SD.* SLAPCAT_PRIVR.* JMBG_SD.* ISVU_D.* ISVU_S.* UIDS_B.* UIDS_JMBG.* UIDS_JMBG_B.* BEZ_OJ.* UIDS_OIBS.* UIDS_OIBS_FINAL.* 2>/dev/null && cd - 1>/dev/null while : do echo read -ep "Greska u redu 176, ulazne datoteke prazne? Stisnite Ctrl+C za izlaz " a done fi echo read -ep "Stisnite Enter za nastavak ili Ctrl+C za izlaz " a dje=0 if [[ -f $ISVU_D && -s $ISVU_D ]] ;then while read line; do set -- $line ;b=$(grep $2 $ISVU_D);echo $line $b|awk 'length>=25'|awk -F# '{print $1 " " $4}'|awk '{print $1 ";" $4}'; done < $UIDS_JMBG_B >$UIDS_OIBS dje=$(wc -l < $UIDS_OIBS) fi if [[ -f $ISVU_S && -s $ISVU_S ]] ;then while read line; do set -- $line ;b=$(grep $2 $ISVU_S);echo $line $b|awk 'length>=25'|awk -F# '{print $1 " " $2}'|awk '{print $1 ";" $4}'; done < $UIDS_JMBG_B >>$UIDS_OIBS fi cat $UIDS_OIBS|sort|uniq >$UIDS_OIBS_FINAL echo djestu=$(wc -l < $UIDS_OIBS_FINAL) stu=$(($djestu - $dje)) echo "$djestu OIB-a djelatnika ($dje) i studenata ($stu) spremno za ispis u datoteku formata" echo "uid;OIB prikladnu za skriptu 'dodaj_oib.pl'. Unesite stazu do te datoteke:" read -e -i "$PWD/dodaj_oib.txt" d if [[ -n $d && -e $d ]] ;then read -ep "Datoteka $d postoji. Prepisati? (Enter=da, Ctrl+c izlaz)" cp $UIDS_OIBS_FINAL $d && echo -e "\nRadna datoteka $UIDS_OIBS_FINAL pospremljena u $d\n" else if [ -z $d ]; then echo -e "Nije zadano ime izlazne datoteke\n" else cp $UIDS_OIBS_FINAL $d && echo -e "\nRadna datoteka $UIDS_OIBS_FINAL pospremljena u $d\n" || echo -e "\nDatoteka $d nije mogla biti kreirana\n" fi fi cd /tmp && rm OIB_iz_ISVU* NEUSKLADJENOST.* REMOVE_PARAGRAPH.* SLAPCAT_SD.* SLAPCAT_PRIVR.* JMBG_SD.* ISVU_D.* ISVU_S.* UIDS_B.* UIDS_JMBG.* UIDS_JMBG_B.* BEZ_OJ.* UIDS_OIBS.* UIDS_OIBS_FINAL.* 2>/dev/null && cd - 1>/dev/null exit 0