<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mrajur</id>
	<title>ICO wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mrajur"/>
	<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php/Special:Contributions/Mrajur"/>
	<updated>2026-05-07T04:14:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=130370</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=130370"/>
		<updated>2018-04-16T11:52:42Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==Bash skripti alustamine==&lt;br /&gt;
&lt;br /&gt;
 Looge fail laiendiga .sh ning avage see oma lemmik editoriga (näiteks vi)&lt;br /&gt;
 Esimesena määrame millega skripti käivitatakse ehk:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
&lt;br /&gt;
 skripti muutmine selliseks, et seda saaks käivitada &lt;br /&gt;
 chmod +x skriptinimi.sh&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
 https://bash.cyberciti.biz/guide/If..else..fi&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Tsüklid==&lt;br /&gt;
&lt;br /&gt;
 https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
 https://www.cyberciti.biz/faq/bash-while-loop/&lt;br /&gt;
 https://bash.cyberciti.biz/guide/The_case_statement&lt;br /&gt;
&lt;br /&gt;
=Protsessi skeemid=&lt;br /&gt;
 Siit piisab kui kasutate esimest nelja elementi ehk Flowline, Terminal, Process ja Decision&lt;br /&gt;
 https://en.wikipedia.org/wiki/Flowchart&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=130361</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=130361"/>
		<updated>2018-04-13T08:13:01Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
 https://bash.cyberciti.biz/guide/If..else..fi&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Tsüklid==&lt;br /&gt;
&lt;br /&gt;
 https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
 https://www.cyberciti.biz/faq/bash-while-loop/&lt;br /&gt;
 https://bash.cyberciti.biz/guide/The_case_statement&lt;br /&gt;
&lt;br /&gt;
=Protsessi skeemid=&lt;br /&gt;
 Siit piisab kui kasutate esimest nelja elementi ehk Flowline, Terminal, Process ja Decision&lt;br /&gt;
 https://en.wikipedia.org/wiki/Flowchart&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=130360</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=130360"/>
		<updated>2018-04-13T08:08:52Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
 https://bash.cyberciti.biz/guide/If..else..fi&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Tsüklid==&lt;br /&gt;
&lt;br /&gt;
 https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
 https://www.cyberciti.biz/faq/bash-while-loop/&lt;br /&gt;
 https://bash.cyberciti.biz/guide/The_case_statement&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=130359</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=130359"/>
		<updated>2018-04-13T08:08:32Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
 https://bash.cyberciti.biz/guide/If..else..fi&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-while-loop/&lt;br /&gt;
https://bash.cyberciti.biz/guide/The_case_statement&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=130358</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=130358"/>
		<updated>2018-04-13T08:05:50Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=121832</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=121832"/>
		<updated>2017-05-09T22:26:47Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
http://www.bashoneliners.com&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|Link&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/esolg.zip&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/msumla.zip&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/klaid.zip&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/rrongelep.zip&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/oparnoja.zip&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/ssaar.zip&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/jkuzmin.zip&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Karatšev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/kkaratsev.zip&lt;br /&gt;
|-&lt;br /&gt;
|Margit Kont&lt;br /&gt;
|Portscanner&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/mkont.zip&lt;br /&gt;
|-&lt;br /&gt;
|Veiko Villo&lt;br /&gt;
|HV toote hinna jälgimine.&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/vvillo.zip&lt;br /&gt;
|-&lt;br /&gt;
|Marta-Heliise Tuur&lt;br /&gt;
|Hangman välise sõnadebaasiga ja mehe joonistamisega&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/mtuur.zip&lt;br /&gt;
|-&lt;br /&gt;
|Karl Oskar V. Kukke&lt;br /&gt;
|Texas hold &#039;em pokker&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/kkukke.zip&lt;br /&gt;
|-&lt;br /&gt;
|Raigo Laanemets&lt;br /&gt;
|Isikukoodi elementide analüüsija kasutades väliseid andmeallikaid&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/rlaanemets.zip&lt;br /&gt;
|-&lt;br /&gt;
|Marvin Martinson&lt;br /&gt;
|Skript mis käib üle failide ja võtab seal info ja laeb selle andmebaasi &lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/mmartinson.zip&lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Failide/kaustade korrastaja&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/kpurru.zip&lt;br /&gt;
|-&lt;br /&gt;
|Triinu Tamm&lt;br /&gt;
|Duplikaatide eemaldaja&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/ttamm.zip&lt;br /&gt;
|-&lt;br /&gt;
|Kaspar Kannik&lt;br /&gt;
|MP3 Mängija&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/kkannik.zip&lt;br /&gt;
|-&lt;br /&gt;
|Aleksandr Laada&lt;br /&gt;
|Kataloogide sünkroniseerija koos logimisega&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/alaada.zip&lt;br /&gt;
|-&lt;br /&gt;
|Priit Saar&lt;br /&gt;
|Failinimede muutja&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/psaar.zip&lt;br /&gt;
|-&lt;br /&gt;
|Aleksandr Pikalo&lt;br /&gt;
|Udp chat serveriga&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/apikalo.zip&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Retsensiooni sisu==&lt;br /&gt;
Retsensioon tuleb kirjutada endast kolme järgneva töö kohta.&lt;br /&gt;
Iga töö kohta kirjutatav retsensioon peab sisaldama järgmiseid punkte:&lt;br /&gt;
Kas loodud skript/programm vastab lähteülesandele?&lt;br /&gt;
Teiepoolsed soovitused koodiparandusteks.&lt;br /&gt;
Teiepoolne hinnang kirjutatud koodile(tekstiline + number 1-5ni).&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 19.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=121831</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=121831"/>
		<updated>2017-05-09T22:19:25Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
http://www.bashoneliners.com&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|Link&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/esolg.zip&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/msumla.zip&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/klaid.zip&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/rrongelep.zip&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/oparnoja.zip&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/ssaar.zip&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/jkuzmin.zip&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Karatšev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/kkaratsev.zip&lt;br /&gt;
|-&lt;br /&gt;
|Margit Kont&lt;br /&gt;
|Portscanner&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/mkont.zip&lt;br /&gt;
|-&lt;br /&gt;
|Veiko Villo&lt;br /&gt;
|HV toote hinna jälgimine.&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/vvillo.zip&lt;br /&gt;
|-&lt;br /&gt;
|Marta-Heliise Tuur&lt;br /&gt;
|Hangman välise sõnadebaasiga ja mehe joonistamisega&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/mtuur.zip&lt;br /&gt;
|-&lt;br /&gt;
|Karl Oskar V. Kukke&lt;br /&gt;
|Texas hold &#039;em pokker&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/kkukke.zip&lt;br /&gt;
|-&lt;br /&gt;
|Raigo Laanemets&lt;br /&gt;
|Isikukoodi elementide analüüsija kasutades väliseid andmeallikaid&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/rlaanemets.zip&lt;br /&gt;
|-&lt;br /&gt;
|Marvin Martinson&lt;br /&gt;
|Skript mis käib üle failide ja võtab seal info ja laeb selle andmebaasi &lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/mmartinson.zip&lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Failide/kaustade korrastaja&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/kpurru.zip&lt;br /&gt;
|-&lt;br /&gt;
|Triinu Tamm&lt;br /&gt;
|Duplikaatide eemaldaja&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/ttamm.zip&lt;br /&gt;
|-&lt;br /&gt;
|Kaspar Kannik&lt;br /&gt;
|MP3 Mängija&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/kkannik.zip&lt;br /&gt;
|-&lt;br /&gt;
|Aleksandr Laada&lt;br /&gt;
|Kataloogide sünkroniseerija koos logimisega&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/alaada.zip&lt;br /&gt;
|-&lt;br /&gt;
|Priit Saar&lt;br /&gt;
|Failinimede muutja&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/psaar.zip&lt;br /&gt;
|-&lt;br /&gt;
|Aleksandr Pikalo&lt;br /&gt;
|Udp chat serveriga&lt;br /&gt;
|http://enos.itcollege.ee/~mrajur/python/apikalo.zip&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Retsensiooni sisu==&lt;br /&gt;
Retsensioon tuleb kirjutada endast kolme järgneva töö kohta.&lt;br /&gt;
Iga töö kohta kirjutatav retsensioon peab sisaldama järgmiseid punkte:&lt;br /&gt;
Kas loodud skript/programm vastab lähteülesandele?&lt;br /&gt;
Teiepoolsed soovitused koodiparandusteks.&lt;br /&gt;
Teiepoolne hinnang kirjutatud koodile(tekstiline + number 1-5ni).&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=121421</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=121421"/>
		<updated>2017-05-08T08:16:28Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
http://www.bashoneliners.com&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Kartašev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|-&lt;br /&gt;
|Margit Kont&lt;br /&gt;
|Portscanner&lt;br /&gt;
|-&lt;br /&gt;
|Veiko Villo&lt;br /&gt;
|HV toote hinna jälgimine.&lt;br /&gt;
|-&lt;br /&gt;
|Marta-Heliise Tuur&lt;br /&gt;
|Hangman välise sõnadebaasiga ja mehe joonistamisega&lt;br /&gt;
|-&lt;br /&gt;
|Karl Oskar V. kukke&lt;br /&gt;
|Texas hold &#039;em pokker&lt;br /&gt;
|-&lt;br /&gt;
|Raigo Laanemets&lt;br /&gt;
|Isikukoodi elementide analüüsija kasutades väliseid andmeallikaid&lt;br /&gt;
|-&lt;br /&gt;
|Marvin Martinson&lt;br /&gt;
|Skript mis käib üle failide ja võtab seal info ja laeb selle andmebaasi &lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Failide/kaustade korrastaja&lt;br /&gt;
|-&lt;br /&gt;
|Triinu Tamm&lt;br /&gt;
|Duplikaatide eemaldaja&lt;br /&gt;
|-&lt;br /&gt;
|Kaspar Kannik&lt;br /&gt;
|MP3 Mängija&lt;br /&gt;
|-&lt;br /&gt;
|Aleksandr Laada&lt;br /&gt;
|Udp chat serveriga&lt;br /&gt;
|-&lt;br /&gt;
|Priit Saar&lt;br /&gt;
|Failinimede muutja&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Retsensiooni sisu==&lt;br /&gt;
Retsensioon tuleb kirjutada endast kolme järgneva töö kohta.&lt;br /&gt;
Iga töö kohta kirjutatav retsensioon peab sisaldama järgmiseid punkte:&lt;br /&gt;
Kas loodud skript/programm vastab lähteülesandele?&lt;br /&gt;
Teiepoolsed soovitused koodiparandusteks.&lt;br /&gt;
Teiepoolne hinnang kirjutatud koodile(tekstiline + number 1-5ni).&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=121404</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=121404"/>
		<updated>2017-05-08T07:16:59Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
http://www.bashoneliners.com&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Kartašev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|-&lt;br /&gt;
|Margit Kont&lt;br /&gt;
|Portscanner&lt;br /&gt;
|-&lt;br /&gt;
|Veiko Villo&lt;br /&gt;
|HV toote hinna jälgimine.&lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Text RPG&lt;br /&gt;
|-&lt;br /&gt;
|Marta-Heliise Tuur&lt;br /&gt;
|Hangman välise sõnadebaasiga ja mehe joonistamisega&lt;br /&gt;
|-&lt;br /&gt;
|Karl Oskar V. kukke&lt;br /&gt;
|Texas hold &#039;em pokker&lt;br /&gt;
|-&lt;br /&gt;
|Raigo Laanemets&lt;br /&gt;
|Isikukoodi elementide analüüsija kasutades väliseid andmeallikaid&lt;br /&gt;
|-&lt;br /&gt;
|Marvin Martinson&lt;br /&gt;
|Skript mis käib üle failide ja võtab seal info ja laeb selle andmebaasi &lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Failide/kaustade korrastaja&lt;br /&gt;
|-&lt;br /&gt;
|Triinu Tamm&lt;br /&gt;
|Duplikaatide eemaldaja&lt;br /&gt;
|-&lt;br /&gt;
|Kaspar Kannik&lt;br /&gt;
|MP3 Mängija&lt;br /&gt;
|-&lt;br /&gt;
|Aleksandr Laada&lt;br /&gt;
|Udp chat serveriga&lt;br /&gt;
|-&lt;br /&gt;
|Priit Saar&lt;br /&gt;
|Failinimede muutja&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Retsensiooni sisu==&lt;br /&gt;
Retsensioon tuleb kirjutada endast kolme järgneva töö kohta.&lt;br /&gt;
Iga töö kohta kirjutatav retsensioon peab sisaldama järgmiseid punkte:&lt;br /&gt;
Kas loodud skript/programm vastab lähteülesandele?&lt;br /&gt;
Teiepoolsed soovitused koodiparandusteks.&lt;br /&gt;
Teiepoolne hinnang kirjutatud koodile(tekstiline + number 1-5ni).&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120946</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120946"/>
		<updated>2017-05-03T12:15:12Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
http://www.bashoneliners.com&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Kartašev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|-&lt;br /&gt;
|Margit Kont&lt;br /&gt;
|Portscanner&lt;br /&gt;
|-&lt;br /&gt;
|Veiko Villo&lt;br /&gt;
|HV toote hinna jälgimine.&lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Text RPG&lt;br /&gt;
|-&lt;br /&gt;
|Marta-Heliise Tuur&lt;br /&gt;
|Hangman välise sõnadebaasiga ja mehe joonistamisega&lt;br /&gt;
|-&lt;br /&gt;
|Karl Oskar V. kukke&lt;br /&gt;
|Texas hold &#039;em pokker&lt;br /&gt;
|-&lt;br /&gt;
|Raigo Laanemets&lt;br /&gt;
|Isikukoodi elementide analüüsija kasutades väliseid andmeallikaid&lt;br /&gt;
|-&lt;br /&gt;
|Marvin Martinson&lt;br /&gt;
|Skript mis käib üle failide ja võtab seal info ja laeb selle andmebaasi &lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Failide/kaustade korrastaja&lt;br /&gt;
|-&lt;br /&gt;
|Triinu Tamm&lt;br /&gt;
|Duplikaatide eemaldaja&lt;br /&gt;
|-&lt;br /&gt;
|Kaspar Kannik&lt;br /&gt;
|MP3 Mängija&lt;br /&gt;
|-&lt;br /&gt;
|Aleksandr Laada&lt;br /&gt;
|Kataloogide sünkroniseerija koos logimisega&lt;br /&gt;
|-&lt;br /&gt;
|Priit Saar&lt;br /&gt;
|Failinimede muutja&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120659</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120659"/>
		<updated>2017-04-30T15:49:27Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
http://www.bashoneliners.com&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Kartašev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|-&lt;br /&gt;
|Margit Kont&lt;br /&gt;
|Portscanner&lt;br /&gt;
|-&lt;br /&gt;
|Veiko Villo&lt;br /&gt;
|HV toote hinna jälgimine.&lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Text RPG&lt;br /&gt;
|-&lt;br /&gt;
|Marta-Heliise Tuur&lt;br /&gt;
|Hangman välise sõnadebaasiga ja mehe joonistamisega&lt;br /&gt;
|-&lt;br /&gt;
|Karl Oskar V. kukke&lt;br /&gt;
|Texas hold &#039;em pokker&lt;br /&gt;
|-&lt;br /&gt;
|Raigo Laanemets&lt;br /&gt;
|Isikukoodi elementide analüüsija kasutades väliseid andmeallikaid&lt;br /&gt;
|-&lt;br /&gt;
|Marvin Martinson&lt;br /&gt;
|Skript mis käib üle failide ja võtab seal info ja laeb selle andmebaasi &lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Failide/kaustade korrastaja&lt;br /&gt;
|-&lt;br /&gt;
|Triinu Tamm&lt;br /&gt;
|Duplikaatide eemaldaja&lt;br /&gt;
|-&lt;br /&gt;
|Kaspar Kannik&lt;br /&gt;
|MP3 Mängija&lt;br /&gt;
|-&lt;br /&gt;
|Aleksandr Laada&lt;br /&gt;
|Kataloogide sünkroniseerija koos logimisega&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120529</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120529"/>
		<updated>2017-04-27T19:24:12Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
http://www.bashoneliners.com&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Kartašev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|-&lt;br /&gt;
|Margit Kont&lt;br /&gt;
|Portscanner&lt;br /&gt;
|-&lt;br /&gt;
|Veiko Villo&lt;br /&gt;
|HV toote hinna jälgimine.&lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Text RPG&lt;br /&gt;
|-&lt;br /&gt;
|Marta-Heliise Tuur&lt;br /&gt;
|Hangman välise sõnadebaasiga ja mehe joonistamisega&lt;br /&gt;
|-&lt;br /&gt;
|Karl Oskar V. kukke&lt;br /&gt;
|Texas hold &#039;em pokker&lt;br /&gt;
|-&lt;br /&gt;
|Raigo Laanemets&lt;br /&gt;
|Isikukoodi elementide analüüsija kasutades väliseid andmeallikaid&lt;br /&gt;
|-&lt;br /&gt;
|Marvin Martinson&lt;br /&gt;
|Skript mis käib üle failide ja võtab seal info ja laeb selle andmebaasi &lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Failide/kaustade korrastaja&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120476</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120476"/>
		<updated>2017-04-26T20:15:53Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
http://www.bashoneliners.com&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Kartašev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|-&lt;br /&gt;
|Margit Kont&lt;br /&gt;
|Portscanner&lt;br /&gt;
|-&lt;br /&gt;
|Veiko Villo&lt;br /&gt;
|HV toote hinna jälgimine.&lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Text RPG&lt;br /&gt;
|-&lt;br /&gt;
|Marta-Heliise Tuur&lt;br /&gt;
|Hangman välise sõnadebaasiga ja mehe joonistamisega&lt;br /&gt;
|-&lt;br /&gt;
|Karl Oskar V. kukke&lt;br /&gt;
|Texas hold &#039;em pokker&lt;br /&gt;
|-&lt;br /&gt;
|Raigo Laanemets&lt;br /&gt;
|Isikukoodi elementide analüüsija kasutades väliseid andmeallikaid&lt;br /&gt;
|-&lt;br /&gt;
|Marvin Martinson&lt;br /&gt;
|Skript mis käib üle failide ja võtab seal info ja laeb selle andmebaasi &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120475</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120475"/>
		<updated>2017-04-26T20:14:34Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
http://www.bashoneliners.com&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Kartašev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|-&lt;br /&gt;
|Margit Kont&lt;br /&gt;
|Portscanner&lt;br /&gt;
|-&lt;br /&gt;
|Veiko Villo&lt;br /&gt;
|HV toote hinna jälgimine.&lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Text RPG&lt;br /&gt;
|-&lt;br /&gt;
|Marta-Heliise Tuur&lt;br /&gt;
|Hangman välise sõnadebaasiga ja mehe joonistamisega&lt;br /&gt;
|-&lt;br /&gt;
|Karl Oskar V. kukke&lt;br /&gt;
|Texas hold &#039;em pokker&lt;br /&gt;
|-&lt;br /&gt;
|Raigo Laanemets&lt;br /&gt;
|Isikukoodi elementide analüüsija kasutades väliseid andmeallikaid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120457</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120457"/>
		<updated>2017-04-26T06:23:21Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
http://www.bashoneliners.com&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Kartašev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|-&lt;br /&gt;
|Margit Kont&lt;br /&gt;
|Portscanner&lt;br /&gt;
|-&lt;br /&gt;
|Veiko Villo&lt;br /&gt;
|HV toote hinna jälgimine.&lt;br /&gt;
|-&lt;br /&gt;
|Katariina Purru&lt;br /&gt;
|Text RPG&lt;br /&gt;
|-&lt;br /&gt;
|Marta-Heliise Tuur&lt;br /&gt;
|Hangman välise sõnadebaasiga ja mehe joonistamisega&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120410</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120410"/>
		<updated>2017-04-24T08:34:13Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
http://www.bashoneliners.com&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Kartašev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|-&lt;br /&gt;
|Margit Kont&lt;br /&gt;
|Portscanner&lt;br /&gt;
|-&lt;br /&gt;
|Veiko Villo&lt;br /&gt;
|HV toote hinna jälgimine.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120399</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120399"/>
		<updated>2017-04-24T06:20:45Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
http://www.bashoneliners.com&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Kartašev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|-&lt;br /&gt;
|Margit Kont&lt;br /&gt;
|Portscanner&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120348</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120348"/>
		<updated>2017-04-21T11:12:25Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Kartašev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|-&lt;br /&gt;
|Margit Kont&lt;br /&gt;
|Portscanner&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120338</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120338"/>
		<updated>2017-04-20T18:23:09Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Kadri Kartašev&lt;br /&gt;
|yahtzee&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120335</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120335"/>
		<updated>2017-04-20T08:01:47Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|-&lt;br /&gt;
|Jevgeni Kuzmin&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120179</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120179"/>
		<updated>2017-04-17T12:01:43Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|-&lt;br /&gt;
|Karel Laid&lt;br /&gt;
|Oracle alertlogi jälgimine, alertide saatmine e-mailina&lt;br /&gt;
|-&lt;br /&gt;
|Richard Rõngelep&lt;br /&gt;
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)&lt;br /&gt;
|-&lt;br /&gt;
|Ott Pärnoja&lt;br /&gt;
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)&lt;br /&gt;
|-&lt;br /&gt;
|Siim Saar&lt;br /&gt;
|Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120156</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120156"/>
		<updated>2017-04-17T08:16:22Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|Margus Sumla&lt;br /&gt;
|ÕIS&#039;i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120154</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120154"/>
		<updated>2017-04-17T05:19:20Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Tekitage süsteemi jõudluse testimise skript.&lt;br /&gt;
 Testima peaks &lt;br /&gt;
 a) võrguühenduse kiirust&lt;br /&gt;
 b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine)&lt;br /&gt;
 c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi)&lt;br /&gt;
 d) Midagi muud?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|Erik Sõlg&lt;br /&gt;
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120003</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120003"/>
		<updated>2017-04-10T06:28:43Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: /* Pythoni kodutöö */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120002</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120002"/>
		<updated>2017-04-10T06:28:27Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
==Pythoni kodutöö==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Nimi&lt;br /&gt;
!Teema&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120001</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=120001"/>
		<updated>2017-04-10T05:16:26Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3 hinnangut teiste pythoni kodutöödele&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
 Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=119988</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=119988"/>
		<updated>2017-04-09T18:28:35Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Pythoni praktikumid=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1==&lt;br /&gt;
 Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
 Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus.&lt;br /&gt;
 Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. &lt;br /&gt;
 Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed.&lt;br /&gt;
 Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118882</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118882"/>
		<updated>2017-03-19T21:53:59Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118677</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118677"/>
		<updated>2017-03-18T21:41:46Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
http://rogerdudler.github.io/git-guide/&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118676</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118676"/>
		<updated>2017-03-18T21:41:25Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|-&lt;br /&gt;
|bc&lt;br /&gt;
|An arbitrary precision calculator language&lt;br /&gt;
|http://www.skrenta.com/rt/man/bc.1.html&lt;br /&gt;
|echo 5+5 | bc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
http://rogerdudler.github.io/git-guide/&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118477</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118477"/>
		<updated>2017-03-10T19:05:45Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort -k5 -n&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
http://rogerdudler.github.io/git-guide/&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118476</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118476"/>
		<updated>2017-03-10T19:04:48Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|&amp;quot;ls -la /var/log | sort -k5 -n&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
http://rogerdudler.github.io/git-guide/&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118475</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118475"/>
		<updated>2017-03-10T19:04:25Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|-&lt;br /&gt;
|cut&lt;br /&gt;
|remove sections from each line of files&lt;br /&gt;
|http://www.skrenta.com/rt/man/cut.1.html&lt;br /&gt;
|http://www.thegeekstuff.com/2013/06/cut-command-examples&lt;br /&gt;
|-&lt;br /&gt;
|sort&lt;br /&gt;
|sort lines of text files&lt;br /&gt;
|http://www.skrenta.com/rt/man/sort.1.html&lt;br /&gt;
|ls -la /var/log | sort -k5 -n&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
http://rogerdudler.github.io/git-guide/&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118474</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118474"/>
		<updated>2017-03-10T18:57:59Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
http://rogerdudler.github.io/git-guide/&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur&lt;br /&gt;
&lt;br /&gt;
Täiendavad kitsendused mis peaks tööd lihtsustama:&lt;br /&gt;
Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik&lt;br /&gt;
Reverse tsooni faili lisamisel tuleb ka named.conf&#039;i uuendada.&lt;br /&gt;
&lt;br /&gt;
NB! Ärge unustage seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname&lt;br /&gt;
https://help.ubuntu.com/community/BIND9ServerHowto&lt;br /&gt;
&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118400</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118400"/>
		<updated>2017-03-06T08:14:29Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
http://rogerdudler.github.io/git-guide/&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Kodutöö 1&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2&lt;br /&gt;
Tähtaeg 07.05 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 14.05 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118356</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118356"/>
		<updated>2017-03-04T22:19:00Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
http://rogerdudler.github.io/git-guide/&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka reload.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;br /&gt;
&lt;br /&gt;
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118188</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118188"/>
		<updated>2017-02-27T08:51:20Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 4==&lt;br /&gt;
 Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T)&lt;br /&gt;
 Kasutaja tuleb küsida kasutajaliidese kaudu&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 5==&lt;br /&gt;
 Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash&lt;br /&gt;
 Ülesannet on võimalik lahendada ka one-linerina!&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
http://rogerdudler.github.io/git-guide/&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka restart.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118187</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118187"/>
		<updated>2017-02-27T08:49:56Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Debug mode==&lt;br /&gt;
&lt;br /&gt;
 bash -x /skripti/path.sh&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
http://rogerdudler.github.io/git-guide/&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka restart.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118157</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118157"/>
		<updated>2017-02-27T06:10:23Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|search for files in a directory hierarchy&lt;br /&gt;
|http://www.skrenta.com/rt/man/find.1.html&lt;br /&gt;
|find / -name passwd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
http://rogerdudler.github.io/git-guide/&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka restart.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118140</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118140"/>
		<updated>2017-02-26T16:06:41Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
http://rogerdudler.github.io/git-guide/&lt;br /&gt;
&lt;br /&gt;
==Bash tsüklid==&lt;br /&gt;
&lt;br /&gt;
https://www.cyberciti.biz/faq/bash-for-loop/&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka restart.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118065</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118065"/>
		<updated>2017-02-23T20:46:17Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
http://rogerdudler.github.io/git-guide/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka restart.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118064</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118064"/>
		<updated>2017-02-23T20:45:49Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka restart.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118063</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=118063"/>
		<updated>2017-02-23T20:44:59Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin ssh://git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
==GIT&#039;i konf==&lt;br /&gt;
Järgnev skript on vajalik selleks, et saaksite oma kodutööd esitada ning hiljem kodutöid hinnangute andmiseks vaadata&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir ~/git&lt;br /&gt;
 cd git&lt;br /&gt;
 git init&lt;br /&gt;
 git config --global user.name &amp;quot;eesnimi perenimi&amp;quot;&lt;br /&gt;
 git config --global user.email &amp;quot;ees.perenimi@itcollege.ee&amp;quot;&lt;br /&gt;
 cp /minu/skript/path.sh .&lt;br /&gt;
 git add minuskriptinimi&lt;br /&gt;
 git status #kontrollimaks kas add toimis&lt;br /&gt;
 git commit -m &amp;quot;Kommentaar&amp;quot;&lt;br /&gt;
 git remote add origin https://Martinra_itk@bitbucket.org/Martinra_itk/skriptimine_2017.git&lt;br /&gt;
 git push -u origin master&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka restart.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117928</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117928"/>
		<updated>2017-02-20T06:34:48Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT&lt;br /&gt;
Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime)&lt;br /&gt;
Seadistatakse ühendus rühmatöö git&#039;i&lt;br /&gt;
 git remote add origin ssh://git@bitbucket.org:Martinra_itk/skriptimine_2017.git&lt;br /&gt;
Tehakse esimene git pull&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 3==&lt;br /&gt;
&lt;br /&gt;
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka restart.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117703</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117703"/>
		<updated>2017-02-13T07:56:40Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
Kodutööd saata aadressile martin.rajur@itcollege.ee&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka restart.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117699</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117699"/>
		<updated>2017-02-12T17:21:55Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
==Sisendi lugemine==&lt;br /&gt;
 &lt;br /&gt;
 read muutujanimi&lt;br /&gt;
 read -p &amp;quot;tekst&amp;quot; muutujanimi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka restart.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117697</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117697"/>
		<updated>2017-02-12T16:57:01Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: /* Bashi kodutöö */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka restart.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Tähtaeg 19.03 kell 23:59&lt;br /&gt;
Hinnangute tähtaeg 26.03 kell 23:59&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117696</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117696"/>
		<updated>2017-02-12T16:56:34Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: /* Bashi kodutöö */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Peale muudatuste tegemist tuleb dns serverile teha ka restart.&lt;br /&gt;
&lt;br /&gt;
NB! Ära unusta seriali muuta&lt;br /&gt;
&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;br /&gt;
&lt;br /&gt;
Tähtaeg 20.03 kell 23:59&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117695</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117695"/>
		<updated>2017-02-12T16:53:14Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|-&lt;br /&gt;
|awk&lt;br /&gt;
|pattern scanning and processing language&lt;br /&gt;
|http://www.skrenta.com/rt/man/awk.1.html&lt;br /&gt;
|Echo one two | awk ‘{print $1}’&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;br /&gt;
&lt;br /&gt;
=Kodutööd=&lt;br /&gt;
==Bashi kodutöö==&lt;br /&gt;
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid.&lt;br /&gt;
Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip).&lt;br /&gt;
Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks.&lt;br /&gt;
Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. &lt;br /&gt;
Skript peab kontrollima reverse resolution zone filet ning seda täiendama.&lt;br /&gt;
Abiks materjal:&lt;br /&gt;
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117640</id>
		<title>Skriptimine 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimine_2017&amp;diff=117640"/>
		<updated>2017-02-06T07:18:28Z</updated>

		<summary type="html">&lt;p&gt;Mrajur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__toc__&lt;br /&gt;
&lt;br /&gt;
=Hindamiskriteeriumid=&lt;br /&gt;
Arvestuse saamiseks peab tudeng esitama järgmised tööd:&lt;br /&gt;
 2 kodutööd&lt;br /&gt;
 3+3 hinnangut teiste kodutöödele&lt;br /&gt;
 Kaitstud praktikumide tööd&lt;br /&gt;
 2 kontrolltööd&lt;br /&gt;
&lt;br /&gt;
=Labori keskkond=&lt;br /&gt;
&lt;br /&gt;
https://elab.itcollege.ee/users/sign_in&lt;br /&gt;
&lt;br /&gt;
 Labs -&amp;gt; Skriptimine 2017&lt;br /&gt;
 Kasutaja: student&lt;br /&gt;
 Parool: student&lt;br /&gt;
&lt;br /&gt;
=Praktikumide ülesanded=&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 1 ==&lt;br /&gt;
Looge skript, mis jagaks etteantud grupile uue kausta&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[sudo] ./jaga.sh KAUST GRUPP &amp;lt;JAGATUD KAUST&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript teeb järgnevat:&lt;br /&gt;
&lt;br /&gt;
*paigaldab samba (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob kausta KAUST (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*loob grupi GRUPP (kui vaja)&lt;br /&gt;
&lt;br /&gt;
*lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload&#039;i&lt;br /&gt;
&lt;br /&gt;
*abimaterjal: [[Failiserveri labor v.2]]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]&lt;br /&gt;
&lt;br /&gt;
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne 2==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=Linuxi käsud=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Käsk&lt;br /&gt;
!Funktsioon&lt;br /&gt;
!Man link&lt;br /&gt;
!Näidis&lt;br /&gt;
|-&lt;br /&gt;
|cd&lt;br /&gt;
|Change Directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/cd.1.html&lt;br /&gt;
|cd /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ls&lt;br /&gt;
|list directory contents &lt;br /&gt;
|http://www.skrenta.com/rt/man/ls.1.html&lt;br /&gt;
|ls -lah /var/log&lt;br /&gt;
|-&lt;br /&gt;
|ps&lt;br /&gt;
|report process status &lt;br /&gt;
|http://www.skrenta.com/rt/man/ps.1.html&lt;br /&gt;
|ps -ef&lt;br /&gt;
|-&lt;br /&gt;
|grep&lt;br /&gt;
|print lines matching a pattern&lt;br /&gt;
|http://www.skrenta.com/rt/man/grep.1.html&lt;br /&gt;
|grep -R &#039;error&#039; /var/log/*&lt;br /&gt;
|-&lt;br /&gt;
|tail&lt;br /&gt;
|output the last parts of file&lt;br /&gt;
|http://www.skrenta.com/rt/man/tail.1.html&lt;br /&gt;
|tail -f /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|cat&lt;br /&gt;
|concatenate files and print on the standard output&lt;br /&gt;
|http://www.skrenta.com/rt/man/cat.1.html&lt;br /&gt;
|cat /var/log/syslog&lt;br /&gt;
|-&lt;br /&gt;
|man&lt;br /&gt;
|format and display the on-line manual pages &lt;br /&gt;
|http://www.skrenta.com/rt/man/man.1.html&lt;br /&gt;
|man man&lt;br /&gt;
|-&lt;br /&gt;
|su&lt;br /&gt;
|run a shell with substitute user and group IDs&lt;br /&gt;
|http://www.skrenta.com/rt/man/su.1.html&lt;br /&gt;
|su - root&lt;br /&gt;
|-&lt;br /&gt;
|cp&lt;br /&gt;
|copy files and directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/cp.1.html&lt;br /&gt;
|cp /var/log/syslog /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mv&lt;br /&gt;
|move (rename) files/directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/mv.1.html&lt;br /&gt;
|mv /var/log/syslog.5 /arhiiv&lt;br /&gt;
|-&lt;br /&gt;
|rm&lt;br /&gt;
|remove files or directories&lt;br /&gt;
|http://www.skrenta.com/rt/man/rm.1.html&lt;br /&gt;
|rm /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|sed&lt;br /&gt;
|Stream editor&lt;br /&gt;
|http://www.skrenta.com/rt/man/sed.1.html&lt;br /&gt;
|sed -ie &#039;s/mida/millega/g&#039; /tmp/tmp_syslog&lt;br /&gt;
|-&lt;br /&gt;
|mkdir&lt;br /&gt;
|make directories &lt;br /&gt;
|http://www.skrenta.com/rt/man/mkdir.1.html&lt;br /&gt;
|mkdir /tmp/skript&lt;br /&gt;
|-&lt;br /&gt;
|chmod&lt;br /&gt;
|change file access premissions&lt;br /&gt;
|http://www.skrenta.com/rt/man/chmod.1.html&lt;br /&gt;
|chmod 700 /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chown&lt;br /&gt;
|change file owner or group&lt;br /&gt;
|http://www.skrenta.com/rt/man/chown.1.html&lt;br /&gt;
|chown student:student /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|chgrp&lt;br /&gt;
|Change group ownership&lt;br /&gt;
|http://www.skrenta.com/rt/man/chgrp.1.html&lt;br /&gt;
|chgrp root /tmp/skript/myscript.sh&lt;br /&gt;
|-&lt;br /&gt;
|whoami&lt;br /&gt;
|print effective userID&lt;br /&gt;
|http://www.skrenta.com/rt/man/whoami.1.html&lt;br /&gt;
|whoami&lt;br /&gt;
|-&lt;br /&gt;
|pwd&lt;br /&gt;
|print name of current/working directory&lt;br /&gt;
|http://www.skrenta.com/rt/man/pwd.1.html&lt;br /&gt;
|pwd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Bash-i info=&lt;br /&gt;
&lt;br /&gt;
==If lause moodustamine==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;if&#039;&#039;&#039; [ Funktsioon ] &#039;&#039;&#039;then&#039;&#039;&#039;&lt;br /&gt;
 tee midagi&lt;br /&gt;
 &#039;&#039;&#039;fi&#039;&#039;&#039;&lt;br /&gt;
 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html&lt;br /&gt;
&lt;br /&gt;
==Exit koodid==&lt;br /&gt;
&lt;br /&gt;
 Viimase käivitatud käsu exit koodi leiate muutujast $?&lt;br /&gt;
 Juhul kui käsk õnnestus on exitkood 0&lt;br /&gt;
 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0&#039;ist erinev&lt;/div&gt;</summary>
		<author><name>Mrajur</name></author>
	</entry>
</feed>