XML päringute kontroll
Probleem
Asutused, kes ei tohiks teha SOAP päringuid serveri pihta on vaja tuvastada.
On olemas dokumendivahetuskeskus(edasipidi DVK), mis vahendab asutuste erinevate dokumendihaldussüsteemide(edaspidi DHS) dokumente. Selleks, et dokumente allalaadida ning muid toiminguid teha, teeb DHS erinevaid päringuid DVKsse. Et vähendada koormust on vaja välja uurida kõik asutuste registrikoodid, kes ei tohiks tegelikult päringuid teha.
Skripti kirjeldus
Skriptile antakse sisendiks päringute logi fail. Logi failist parsitakse välja registrikoodid. Seejärel on meil olemas kõik registrikoodid, kes on päringuid teinud vastavalt logi ajavahemikule. Peale seda laeme alla asutuste registrikoodid kellele on lubatud päringuid teha. Siis võrdleme registrikoode ning saame teada, kes teevad päringuid olenemata, kas nad võivad teha.
Skript
#!/bin/bash
export LC_ALL=C
echo "Palun sisesta tehtud päringute logi faili nimi:"
# Salvestame muutujana logi faili nime, mida on tarvis töödelda, otsida
# üles tehtud päringute registrikoodid. Kasutame tsüklid ning if lauset,
# et sisendiks oleks kindlasti eksisteeriv fail.
while [ ! -f LOGI ]; do
read LOGI
if [ ! -f $LOGI ]
then
echo "Sellist faili $LOGI ei eksisteeri! Palun sisesta õige faili nimi:"
elif [ -f $LOGI ]
then
echo "Fail eksisteerib!"
break
fi
done
echo "Koostan tehtud päringute registrikoodide nimekirja"
# Eraldame registrikoodid tehtud päringutest, registrikoodid asuvad
# <xtee:asutus> ning </xtee:asutus> elementida vahel ja salvestame
# tulemused ajutisse faili tegijad2.txt
sed -n 's|.*<\(xtee:asutus\)>\(.*\)</*\1>.*|\2|p' $LOGI > tegijad2.txt
echo "Toimub registrikoodide loendus ja sorteerimine, jäetakse alles ainult unikaalsed"
# Sorteerime faili tegijad2.txt sisu nii, et jäetakse alles ainult
# unikaalsed registrikoodid ning pannakse numbrilisse järjekorda
sort tegijad2.txt | uniq | sort -n > tegijad.txt
# Kustutame ajutise faili
rm tegijad2.txt
echo "Laen alla lubatud päringu tegijate registrikoodid: http://www.eesti.ee/portaal/dvk.asutused"
# Laeme alla aadressilt http://www.eesti.ee/portaal/dvk.asutused lehe ninf
# salvestame ajutisse faili lubatud2.txt, kusjuures wget infot ei näidata
wget -O lubatud2.txt http://www.eesti.ee/portaal/dvk.asutused --quiet
echo "Eraldame registrikoodid allalaetud tabelist"
# Ajutisest failist võtame read, mis algavad <tr><td> tagidega, seejärel
# võtame stringid/registrikoodid, mis jäävad <tr><td> ning </td><td> vahele
# ja salvestame tulemuse faili lubatud.txt
cat lubatud2.txt | grep "<tr><td>" | sed -e 's/^<tr><td>//' -e 's/<\/td><td>.*$//' > lubatud.txt
# Kustutame ajutise faili
rm lubatud2.txt
echo -e "\nJärgmised asutused ei tohiks päringuid serveri pihta teha:"
grep -v -f lubatud.txt tegijad.txt > keelatud.txt
cat keelatud.txt
echo "Need registrikoodid salvestati faili keelatud.txt"
# Kustutame ajutised failid
rm lubatud.txt tegijad.txt