XML päringute kontroll: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Mvaling (talk | contribs)
No edit summary
Mvaling (talk | contribs)
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category: Skriptimiskeeled]]
[[Category: Skriptimiskeeled]]
==Probleem==
==Probleem==
Asutused teevad liiga tihti teatud XML päringuid, mis koormab serverit tarbetult.
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, teeb DHS päringu "dhl:receiveDocuments" DVKsse. Kuna dokumendivahetus ei ole nii tihe, st asutusele ei tule iga minuti tagant uusi dokumente, siis ei ole ka tarvis teha päringut iga 1-59 minuti tagant. Piisab kui päringut tehakse iga tunni tagant.
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==
==Skripti kirjeldus==
Skriptile antakse ette maksimaalne intervalli aeg, alla mille kuvatakse liiga tihti tehtud XML päringu registrikoodid (sisalduvad XMLis endas). Määratakse ka XML päringu nimed, mida kontrollitakse.
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==
<source lang="bash">
#!/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
</source>
==Autor==
--[[User:Mvaling|Marko Valing, AK31(2010)]] 10:43, 28 January 2011 (EET)

Latest revision as of 10:43, 28 January 2011

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

Autor

--Marko Valing, AK31(2010) 10:43, 28 January 2011 (EET)