summaryrefslogtreecommitdiff
path: root/tasks/copy_rename_20_files_tail_env/solution
diff options
context:
space:
mode:
Diffstat (limited to 'tasks/copy_rename_20_files_tail_env/solution')
-rw-r--r--tasks/copy_rename_20_files_tail_env/solution/solution.py92
-rw-r--r--tasks/copy_rename_20_files_tail_env/solution/solution.sh40
2 files changed, 132 insertions, 0 deletions
diff --git a/tasks/copy_rename_20_files_tail_env/solution/solution.py b/tasks/copy_rename_20_files_tail_env/solution/solution.py
new file mode 100644
index 0000000..f661c4d
--- /dev/null
+++ b/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'] + repr(c)
+
+# S pomočjo programa cURL shrani vsebino spletne strani www.google.com v datoteko z imenom website.txt
+def googl():
+ import urllib.request
+ open('website.txt', 'w').write(urllib.request.urlopen('http://www.google.com').read())
+
+# Napiši ukaz, ki bo število pojavitev značke <div> 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(repr(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 http.server
+ import socketserver
+ httpd = socketserver.TCPServer(("", 8000), http.server.SimpleHTTPRequestHandler)
+ httpd.serve_forever()
diff --git a/tasks/copy_rename_20_files_tail_env/solution/solution.sh b/tasks/copy_rename_20_files_tail_env/solution/solution.sh
new file mode 100644
index 0000000..b8e2d13
--- /dev/null
+++ b/tasks/copy_rename_20_files_tail_env/solution/solution.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# preimenuj vse datoteke tako, da zamenja minuse s podrtaji
+rename 'y/-/_/' *
+
+# Napii im kraji ukaz, ki vse datoteke iz /home/user/mapa/mojimenik premakne v /home/user/novi
+mv /home/user/mapa/mojimenik/* /home/user/novi/
+
+# Napii ukaz, ki s pomojo ukaza grep v datoteko "mama.txt" izpie vse navade (ne skrite) datoteke v trenutnem imeniku, ki vsebujejo niz "mama", v datoteko "napake.txt" pa izpie vse morebitne napake (npr. to, da so nekateri objekti v trenutnem imeniku dejansko imeniki ali napane simboline povezave)
+grep -l 'mama' * 1>mama.txt 2>napake.txt
+
+# Napii ukaz, ki bo 5s sledil vsebini /var/log/syslog. V primeru, da se v syslogu pojavi niz "zmeda", naj program izpie "imam ga". Poleg tega naj program med sledenjem syslog-u odteva od 5 do 1 (vsako sekundo naj se izpie 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 pomojo programa cURL shrani vsebino spletne strani www.google.com v datoteko z imenom website.txt
+curl http://www.google.com > website.txt
+
+# Napii ukaz, ki bo tevilo pojavitev znake <div> 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))
+
+# Napii ukaz brez uporabe programa cron, kateri 5 minut po izvedbi izpie vsebino imenika v katerem se trenutno nahaja
+$(sleep 300; ls) &
+
+# Napii najkraji ukaz, ki s pomojo Pythona zaene preprost (integriran) HTTP strenik kateri stree datoteke iz imenika iz katerega je bil pognan na vratih 8000
+python -m SimpleHTTPServer \ No newline at end of file