From 7334ff1f913735d5718cd824696e71f878ddf840 Mon Sep 17 00:00:00 2001 From: "mn3983@student.uni-lj.si" Date: Sun, 25 Jan 2015 15:24:49 +0000 Subject: Task 04 solution git-svn-id: https://svn.lusy.fri.uni-lj.si/kpov-public-svn/kpov-public@231 5cf9fbd1-b2bc-434c-b4b7-e852f4f63414 --- .../solution/solution.py | 92 ++++++++++++++++++++++ .../solution/solution.sh | 40 ++++++++++ 2 files changed, 132 insertions(+) create mode 100644 kpov_judge/tasks/copy_rename_20_files_tail_env/solution/solution.py create mode 100644 kpov_judge/tasks/copy_rename_20_files_tail_env/solution/solution.sh (limited to 'kpov_judge/tasks/copy_rename_20_files_tail_env') diff --git a/kpov_judge/tasks/copy_rename_20_files_tail_env/solution/solution.py b/kpov_judge/tasks/copy_rename_20_files_tail_env/solution/solution.py new file mode 100644 index 0000000..0ad5c65 --- /dev/null +++ b/kpov_judge/tasks/copy_rename_20_files_tail_env/solution/solution.py @@ -0,0 +1,92 @@ +# preimenuj vse datoteke tako, da zamenjaš minuse s podčrtaji +def rename(): + import os + for filename in os.listdir('.'): + os.rename(filename, filename.replace('-', '_')) + +# Napiši čim krajši ukaz, ki vse datoteke iz /home/user/mapa/mojimenik premakne v /home/user/novi +def mv_novi(): + import os + for filename in os.listdir("/home/user/mapa/mojimenik/"): + os.rename('/home/user/mapa/mojimenik/' + filename, '/home/user/novi/' + filename) + +# Napiši ukaz, ki s pomočjo ukaza grep v datoteko "mama.txt" izpiše vse navade (ne skrite) datoteke v trenutnem imeniku, ki vsebujejo niz "mama", v datoteko "napake.txt" pa izpiše vse morebitne napake (npr. to, da so nekateri objekti v trenutnem imeniku dejansko imeniki ali napačne simbolične povezave) +def mama(): + import os + import re + import mmap + mama = '' + wrong = '' + for filename in os.listdir('.'): + try: + f = open(filename, 'r+') + data = mmap.mmap(f.fileno(), 0) + if re.search('mama', data): + mama = mama + filename + "\n" + except ValueError: + wrong = wrong + filename + "\n" + open('mama.txt', 'w').write(mama) + open('napake.txt', 'w').write(wrong) + +# Napiši ukaz, ki bo 5s sledil vsebini /var/log/syslog. V primeru, da se v syslogu pojavi niz "zmeda", naj program izpiše "imam ga". Poleg tega naj program med sledenjem syslog-u odšteva od 5 do 1 (vsako sekundo naj se izpiše naslednja številka. +def checker(): + import time + import re + import mmap + t = time.time() * 1000 + n = t + + f = open('/var/log/syslog', 'r+') + data = mmap.mmap(f.fileno(), 0) + me = re.findall('zmeda', data) + + c = len(me) + for i in range(5, 0, -1): + print i + n += 1000 + while n > t: + f = open('/var/log/syslog', 'r+') + data = mmap.mmap(f.fileno(), 0) + me = re.findall('zmeda', data) + if len(me) > c: + c = len(me) + print 'imam ga' + t = time.time() * 1000 + +# Nastavi okoljsko spremenljivko TEST, da bo imela isto vrednost kot okoljska spremenljivka USER + število okoljskih spremenljivk, ki v imenu ali vrednosti ne vsebujejo besede TEST. Primer: polz37 +def env(): + import os + import re + c = 0 + for i in os.environ: + if not (re.search('TEST', i) or re.search('TEST', os.environ[i])): + c = c + 1 + os.environ['TEST'] = os.environ['USER'] + `c` + +# S pomočjo programa cURL shrani vsebino spletne strani www.google.com v datoteko z imenom website.txt +def googl(): + import urllib2 + open('website.txt', 'w').write(urllib2.urlopen('http://www.google.com').read()) + +# Napiši ukaz, ki bo število pojavitev značke
v datoteki website.txt dodal na konec te iste datoteke brez, da bi se ukaz zapisal v zgodovino ukazov "bash history" +def div(): + import re + import mmap + f = open('website.txt', 'r+') + data = mmap.mmap(f.fileno(), 0) + me = re.findall('<[^/<>]*div[^>]*>', data) + open('website.txt', 'a+').write(`len(me)`) + +# Napiši ukaz brez uporabe programa cron, kateri 5 minut po izvedbi izpiše vsebino imenika v katerem se trenutno nahajaš +def sleep(): + import time + import os + time.sleep(300) + print os.listdir('.') + +# Napiši najkrajši ukaz, ki s pomočjo Pythona zažene preprost (integriran) HTTP strežnik kateri streže datoteke iz imenika iz katerega je bil pognan na vratih 8000 +def server(): + import SimpleHTTPServer + import SocketServer + httpd = SocketServer.TCPServer(("", 8000), SimpleHTTPServer.SimpleHTTPRequestHandler) + httpd.serve_forever() \ No newline at end of file diff --git a/kpov_judge/tasks/copy_rename_20_files_tail_env/solution/solution.sh b/kpov_judge/tasks/copy_rename_20_files_tail_env/solution/solution.sh new file mode 100644 index 0000000..b8e2d13 --- /dev/null +++ b/kpov_judge/tasks/copy_rename_20_files_tail_env/solution/solution.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# preimenuj vse datoteke tako, da zamenjaš minuse s podčrtaji +rename 'y/-/_/' * + +# Napiši čim krajši ukaz, ki vse datoteke iz /home/user/mapa/mojimenik premakne v /home/user/novi +mv /home/user/mapa/mojimenik/* /home/user/novi/ + +# Napiši ukaz, ki s pomočjo ukaza grep v datoteko "mama.txt" izpiše vse navade (ne skrite) datoteke v trenutnem imeniku, ki vsebujejo niz "mama", v datoteko "napake.txt" pa izpiše vse morebitne napake (npr. to, da so nekateri objekti v trenutnem imeniku dejansko imeniki ali napačne simbolične povezave) +grep -l 'mama' * 1>mama.txt 2>napake.txt + +# Napiši ukaz, ki bo 5s sledil vsebini /var/log/syslog. V primeru, da se v syslogu pojavi niz "zmeda", naj program izpiše "imam ga". Poleg tega naj program med sledenjem syslog-u odšteva od 5 do 1 (vsako sekundo naj se izpiše naslednja številka. +COUNT=$(grep 'zmeda' /var/log/syslog | wc -l ); +END=$(date +%s%N | cut -b1-13); +for i in {5..1}; do + END=$(($END + 1000)); + echo "$i"; + while [ $(date +%s%N | cut -b1-13) -lt $END ]; do + COUN1=$(grep 'zmeda' /var/log/syslog | wc -l ); + if [ $COUN1 -gt $COUNT ]; then + echo "imam ga"; + COUNT=$COUN1; + fi + done +done + +# Nastavi okoljsko spremenljivko TEST, da bo imela isto vrednost kot okoljska spremenljivka USER + število okoljskih spremenljivk, ki v imenu ali vrednosti ne vsebujejo besede TEST. Primer: polz37 +TEST="$USER$(printenv | grep -v TEST | wc -l)"; export TEST + +# S pomočjo programa cURL shrani vsebino spletne strani www.google.com v datoteko z imenom website.txt +curl http://www.google.com > website.txt + +# Napiši ukaz, ki bo število pojavitev značke
v datoteki website.txt dodal na konec te iste datoteke brez, da bi se ukaz zapisal v zgodovino ukazov "bash history" +grep -o "<[^/<>]*div[^>]*>" website.txt | wc -l >> website.txt; history -d $((HISTCMD-1)) + +# Napiši ukaz brez uporabe programa cron, kateri 5 minut po izvedbi izpiše vsebino imenika v katerem se trenutno nahajaš +$(sleep 300; ls) & + +# Napiši najkrajši ukaz, ki s pomočjo Pythona zažene preprost (integriran) HTTP strežnik kateri streže datoteke iz imenika iz katerega je bil pognan na vratih 8000 +python -m SimpleHTTPServer \ No newline at end of file -- cgit v1.2.1