Skriptimiskeeled aine aruanded 2010 sügis: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Lliibert (talk | contribs)
Rsiitan (talk | contribs)
No edit summary
 
(43 intermediate revisions by 9 users not shown)
Line 12: Line 12:
==Alvar Unuks AK41==
==Alvar Unuks AK41==
Suurima andmemahuga paketite leidmine
Suurima andmemahuga paketite leidmine
<source lang="bash">
!#/bin/bash
sed -ne '/^Package: \(.*\)/{s//\1/;h;};/^Installed-Size: \(.*\)/{s//\1/;G;s/\n/ /;p;}' /var/lib/dpkg/status | sort -rn
</source>


==Reget Kalamees DK21==
==Reget Kalamees DK21==
Line 17: Line 21:


==Kaspar Prei==
==Kaspar Prei==
[[Skript leiab dublikaat failid]]
[[Skript leiab dublikaat failid BASH]]
 
[[Skript leiab dublikaat failid Python]]
 
[[Skript, mis leiab application log'ist viimase nädala joosul tehtud "Error" tüüpi kirjed ja edastab need administraatorile e-kirjana Powershell]]


==Lembit Elmik AK21==
==Lembit Elmik AK21==
Line 29: Line 37:


==Marko Valing==
==Marko Valing==
*[[XML päringute sageduse kontroll - BASH]]
*[[XML päringute kontroll]] - BASH
*[[Python]]
*[[XML dokumentide parsija]] - Python
*[[Teenusemonitor]]
*[[Teenusemonitor]] - Powershell


==Lauri Liibert AK21==
==Lauri Liibert AK21==
* BASH [[Skript, mis otsib üles failid mille poole ei ole ammu pöördutud ja arhiveerib]]
* BASH [[Skript, mis otsib üles failid mille poole ei ole ammu pöördutud ja arhiveerib]]
* PYTHON [[Skript, mis otsib üles failid mille poole ei ole ammu pöördutud ja arhiveerib]]
* [[Skript, mis otsib üles failid mille poole ei ole ammu pöördutud ja arhiveerib - Python]]
* POWERSHELL [[Skript, mis küsib ACL-i objekte AD-st]]
* [[Skript, mis küsib ACL-i objekte AD-st - Powershell]]


==Siim Liivand AK41==
==Siim Liivand AK41==
Midagi mailiserveri logide põhjal?
* bash: [[skript, mis teeb midagi vajalikku hunniku graafikafailidega]]
* python: [[ dhcp.leases kontrollimise skript ]]
* powershell: [[ skript, mis teeb midagi printeritega ]]


==Sander Tuulik AK41==
==Sander Tuulik AK41==
Skript mis otsib kõik pildi,video,muusika,dokumendid ja jagab need kaustadesse.
[[Skript mis otsib kõik pildi,video,muusika,dokumendi failid ja jagab need kaustadesse - BASH]]<br/>
[[Skript mis otsib kõik pildi,video,muusika,dokumendi failid ja jagab need kaustadesse - Python]]<br/>
[[Skript, mis leiab etteantud kataloogist või kettalt samanimelised failid ja väljastab nende nimekirja- PowerShell]]


==Kristjan Karmo AK41==
==Kristjan Karmo AK41==
Line 50: Line 62:


==Chris Sinihelm AK41==
==Chris Sinihelm AK41==
[[Skript, millega saab public folderitesse õiguseid lisada - PowerShell]]
[[Skript, mis tõstab kõik väikesed .txt failid ühte folderisse - BASH]] <br />
[[Skript, millega saab public folderitesse õiguseid lisada ja neid sealt ka eemaldada - PowerShell]] <br />
[[Skript, Samba seadistamiseks - Python]]


==Nadežda Furs A31==
==Nadežda Furs A31==


==Sigmar Muuga DK31==
==Sigmar Muuga DK31==
Skript, mis vaatab /var/log/auth.log faili ja võtab sealt enim ebaõnnestunud IP aadressid, mis üritasid teha sisse logimist SSH kaudu(lävend võiks näiteks olla 10 ebaõnnestunud katset) ning saadab need kas e-mailile või lisab tulemüüri reeglitesse(IPTABLES näiteks).
* [http://wiki.itcollege.ee/index.php/Skriptimiskeeled_aine_aruanded_2010_s%C3%BCgis/SigmarMuuga/Bash Bash]
* [http://wiki.itcollege.ee/index.php/Skriptimiskeeled_aine_aruanded_2010_s%C3%BCgis/SigmarMuuga/Python Python]
* [http://wiki.itcollege.ee/index.php/Skriptimiskeeled_aine_aruanded_2010_s%C3%BCgis/SigmarMuuga/Poweshell Poweshell]


Jah, ma tean, et on ka paremaid viise hoste blokeerida, näiteks kasutada hosts-allow parameetrit ssh konfiguratsioonis.
==Siim Kullerkupp AK21==
 
===Bash versioon===
<source lang="bash">
#!/bin/bash
 
# Skript, mis loeb läbi UNIX-i auth.log faili ja koostab IPTables block reeglid IP aadressidele,
# mille pealt on autentimine ebaõnnestunud vähemalt etteantud arv kordi
 
# käivitamise näide:
# sh check_ip.sh /var/log/auth.log /etc/iptables_blocked.txt
 
# Autor: Sigmar Muuga, DK31
 
# mitme ebaõnnestumise korral me IP blokeerime
BLOCK_LEVEL=5
# auth.log faili asukoht
AUTH_LOG_FILE=$1
# tüüpilised veasituatsioonid
ERROR_PATTERNS="error | illegal | not\ allowed"
# väljundfaili nimi (või asukoht)
IP_TABLES_FILE=$2
 
# kontrollime etteantud argumenti
if [ -z "$1" ]; then
echo "No command-line arguments."
exit 0
fi
 
if [ -z "$2" ]; then
echo "No IPTABLES file specified."
exit 0
fi
 
# kontrollime, et faili saaks kirjutada
touch "$IP_TABLES_FILE"
if [ -e $IP_TABLES_FILE ]; then
echo "IPTABLES file: "$IP_TABLES_FILE
else
echo "Cannot write IPTABLES file!"
exit 0
fi
 
# itereerime yle logiridade
more $AUTH_LOG_FILE | egrep "$ERROR_PATTERNS" | while read line; do
address=$(echo $line | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}')
# kas on valiidne IP
if [ ${#address} -gt 0 ]; then
# loeme esinevuskorrad
occurences=$(grep -c $address $AUTH_LOG_FILE)
if [ $occurences -ge $BLOCK_LEVEL ]; then # kui on juba piisavalt feilinud IP
added_occurences=$(grep -c $address $IP_TABLES_FILE)
#kontrollime, et poleks juba lisatud
if [ $added_occurences -lt 1 ]; then
echo "Blacklisting "$address" with "$occurences" occurences"
#kirjutame IPTABLES reegli
echo "iptables -A INPUT -s "$address" -j DROP" >> $IP_TABLES_FILE
fi
fi
fi
done
</source>
===Pythoni versioon===
<source lang="python">
#!/usr/bin/python
# -*- coding: latin-1 -*-


import sys
*[[Skript, mis otsib arvutist kõik .mp3 failid ja teeb nendest playlisti-Powershell]]
import getopt
*[[Skript, mis otsib pilte ja loob kaustad aasta järgi ning tõstab vastava aasta pildi vastava aasta kausta-Python]]
import os
*[[Skript, mis teeb teatud kaustast backupi ja kustutab üle 30 päeva vanad backupid ära-BASH]]
import re


# Skript, mis loeb läbi UNIX-i auth.log faili ja koostab IPTables block reeglid IP aadressidele,
==Risto Siitan A22 ==
# mille pealt on autentimine ebaõnnestunud vähemalt etteantud arv kordi
# käivitamise näide:
# py check_ip.py --logfile=/path/to/logfile --iptablesfile=/path/to/iptablesfile
# Autor: Sigmar Muuga, DK31
 
def main():
    # mitme ebaõnnestumise korral me IP blokeerime
    BLOCK_LEVEL=5
   
    # kuvab kasutamise info
    def usage():
        print 'Programmi kasutamine:'
        print 'py check_ip.py --logfile=/path/to/logfile --iptablesfile=/path/to/iptablesfile'
   
    # loendab stringi esinemised etteantud failis
    def matchCountInFile(str, filename):
        log_file = open(filename, 'r')
        count = 0
        for line in log_file:
            if re.search(str, line):
                count=count+1
        return count
   
    try:
        # loeme ja kontrollime getopti abil argumendid
        opts, args = getopt.getopt(sys.argv[1:], "li:v", ["logfile=", "iptablesfile="])
        AUTH_LOG_FILE = ''
        IP_TABLES_FILE = ''
        for opt, arg in opts:
            if opt == '--logfile':
                AUTH_LOG_FILE = arg
            elif opt == '--iptablesfile':
                IP_TABLES_FILE = arg
 
        print 'AUTH_LOG_FILE=' + AUTH_LOG_FILE
        print 'IP_TABLES_FILE=' + IP_TABLES_FILE
 
        if AUTH_LOG_FILE.__len__() < 1:
            raise Exception('Invalid auth log filename')
        if IP_TABLES_FILE.__len__() < 1:
            raise Exception('Invalid iptables filename')
       
        if not os.path.isfile(AUTH_LOG_FILE):
            raise Exception('Auth log file does not exist')
 
        ip_pattern = re.compile('([0-9]{1,3}\.){3}[0-9]{1,3}')
       
        # valmistame logifaili lugemiseks ette
        log_file = open(AUTH_LOG_FILE, 'r')
        ip_address_array = []
        ip_tables_filehandle = None
        # itereerime yle logiridade
        for log_line in log_file:
            # read, mis on veaga
            if (re.search('error', log_line) != None or re.search('illegal',  log_line) != None or re.search('not allowed', log_line) != None):
                ip_address_match = re.search(ip_pattern, log_line)
                if (ip_address_match == None):
                    continue
                # leiame rea pealt IP aadressi
                ip_address = ip_address_match.group(0)
                occurences = matchCountInFile(ip_address, AUTH_LOG_FILE)
                # vajadusel blacklistime
                if occurences >= BLOCK_LEVEL and not ip_address in ip_address_array:
                    ip_address_array.append(ip_address)
                    print "Blacklisting " + ip_address + " with " + str(occurences) + " occurences"
                    if ip_tables_filehandle == None:
                        ip_tables_filehandle = open(IP_TABLES_FILE, 'w')
                    ip_tables_filehandle.write("iptables -A INPUT -s " + ip_address + " -j DROP\n")
        log_file.close()
 
        if (ip_tables_filehandle != None):
            ip_tables_filehandle.close()
 
    except getopt.GetoptError, err:
        print str(err)
        usage()
        sys.exit(2)
 
# k2ivitame meetodi
if __name__ == "__main__":
    main()
</source>
 
==Siim Kullerkupp AK21==


*[[Skript mis otsib arvutist kõik .mp3 failid ja teeb nendest playlisti-Powershell]]
*[[Skript, mis kontrollib sisestatud programmi soovitusi ning soovikorral ka rakendab need]]

Latest revision as of 19:42, 16 May 2011

Siia tulevad kodus tehtud tööde lingid

Esitaja nimi

Vabad ideed

Alvar Unuks AK41

Suurima andmemahuga paketite leidmine

!#/bin/bash
sed -ne '/^Package: \(.*\)/{s//\1/;h;};/^Installed-Size: \(.*\)/{s//\1/;G;s/\n/ /;p;}' /var/lib/dpkg/status | sort -rn

Reget Kalamees DK21

Skript otsib vabade Wifi AP-de hulgast kõige kiirema ühenduse ja haagib end selle külge

Kaspar Prei

Skript leiab dublikaat failid BASH

Skript leiab dublikaat failid Python

Skript, mis leiab application log'ist viimase nädala joosul tehtud "Error" tüüpi kirjed ja edastab need administraatorile e-kirjana Powershell

Lembit Elmik AK21

  • Bash - Skript, mis kontrollib võrguühenduse olemasolu ning selle puudusel diagnoosib häda.

V6rgudiagnoosiskript

  • Python - SSH vigaste logimiste järgi source IP hosts.deny faili ja lisatud IP'd mailile (saadetud õppejõu mailile)
  • PowerShell - Arvuti andmete (mälu hulk, protsessori tüüp jne.) kuvamine

Marko Valing

Lauri Liibert AK21

Siim Liivand AK41

Sander Tuulik AK41

Skript mis otsib kõik pildi,video,muusika,dokumendi failid ja jagab need kaustadesse - BASH
Skript mis otsib kõik pildi,video,muusika,dokumendi failid ja jagab need kaustadesse - Python
Skript, mis leiab etteantud kataloogist või kettalt samanimelised failid ja väljastab nende nimekirja- PowerShell

Kristjan Karmo AK41

Chris Sinihelm AK41

Skript, mis tõstab kõik väikesed .txt failid ühte folderisse - BASH
Skript, millega saab public folderitesse õiguseid lisada ja neid sealt ka eemaldada - PowerShell
Skript, Samba seadistamiseks - Python

Nadežda Furs A31

Sigmar Muuga DK31

Siim Kullerkupp AK21

Risto Siitan A22