User:Amill: Difference between revisions
From ICO wiki
Jump to navigationJump to search
Line 10: | Line 10: | ||
==Lahendus== | ==Lahendus== | ||
<source lang="python"> | <source lang="python"> | ||
#!/usr/bin/python | |||
# -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||
#Autor:Andres Mill A22 amill@itcollege.ee | #Autor:Andres Mill A22 amill@itcollege.ee | ||
Line 15: | Line 16: | ||
#Viimane muutmise kuupäev:23.05.2011 | #Viimane muutmise kuupäev:23.05.2011 | ||
#Skript kontrollib, kas kasutaja on lukus. | #Skript kontrollib, kas kasutaja on lukus. | ||
#Impordime sys ja os moodulid | #Impordime sys ja os moodulid | ||
#sys moodulit kasutame k2surea parameetrite lugemiseks. | #sys moodulit kasutame k2surea parameetrite lugemiseks. | ||
Line 21: | Line 22: | ||
import sys | import sys | ||
import os | import os | ||
#Kontrollime, kas skript on käivitatud õigel kujul | #Kontrollime, kas skript on käivitatud õigel kujul | ||
#Kui on, defineerime muutuja kasutaja, mis sisaldab otsitavat kasutajanime. | #Kui on, defineerime muutuja kasutaja, mis sisaldab otsitavat kasutajanime. | ||
Line 30: | Line 31: | ||
print "Käivita skript kujul: python %s kasutajanimi"%(sys.argv[0]) | print "Käivita skript kujul: python %s kasutajanimi"%(sys.argv[0]) | ||
exit(0) | exit(0) | ||
#Kontrollime, kas skript on käivitatud root õigustes. | #Kontrollime, kas skript on käivitatud root õigustes. | ||
#Kui ei ole, teatame kasutajale, et käivita skript uuesti vastavates õigustes. | #Kui ei ole, teatame kasutajale, et käivita skript uuesti vastavates õigustes. | ||
Line 36: | Line 37: | ||
print "Käivita skript root õigustes!" | print "Käivita skript root õigustes!" | ||
exit(0) | exit(0) | ||
#Avame /etc/shadow faili, kus saame kontrollida, kas kasutaja on lukus. | #Avame /etc/shadow faili, kus saame kontrollida, kas kasutaja on lukus. | ||
fh=open("/etc/shadow") | fh=open("/etc/shadow") | ||
#Abimuutuja, millega saame kontrollida, kas kasutaja on olemas. | #Abimuutuja, millega saame kontrollida, kas kasutaja on olemas. | ||
i=0; | i=0; | ||
#Käime foriga kõik read läbi. | #Käime foriga kõik read läbi. | ||
#Kui kasutaja on reas olemas, kontrollime, kas kasutaja on lukus. | #Kui kasutaja on reas olemas, kontrollime, kas kasutaja on lukus. | ||
#Kui reas on symbolid :!, siis on kasutaja lukus. | #Kui reas on symbolid :!, siis on kasutaja lukus. | ||
for line in fh.readlines(): | for line in fh.readlines(): | ||
if kasutaja in line : | if kasutaja in line : | ||
i=i+1 | i=i+1 | ||
if ":!" in line : | if ":!" in line : | ||
print "%s on lukus"%(kasutaja) | print "Kasutaja %s on lukus"%(kasutaja) | ||
else : | else : | ||
print "%s pole lukus"%(kasutaja) | print "Kasutaja %s pole lukus"%(kasutaja) | ||
#Kui i väärtus on 0, siis kasutajat pole olemas. | #Kui i väärtus on 0, siis kasutajat pole olemas. | ||
#Kui i väärtus on 1, siis kasutaja on oleas. | #Kui i väärtus on 1, siis kasutaja on oleas. | ||
if (i==0): | if (i==0): | ||
print "%s ei ole olemas."%(kasutaja) | print "Kasutajat %s ei ole olemas."%(kasutaja) | ||
#Sulgeme faili. | #Sulgeme faili. | ||
fh.close() | fh.close() |
Latest revision as of 18:15, 23 May 2011
Python
Ülesanne
- Skript kontrollib, kas kasutaja on lukus.
- Skript tuleb käivitada root õigustes, kui õigused puuduvad, väljutakse skriptist
- Skript tuleb käivitada kujul: python is_locked.py kasutajanimi. Kui ei käivitata, teatakse kasutajale, kuidas tuleb skript käivitada.
- Kui kasutaja on lukus, siis öeldakse, et kasutaja on lukus.
- Kui kasutaja ei ole lukus, sis öeldakse, et kasutaja ei ole lukus.
- Kui kasutajat ei eksisteeri, siis öeldakse, et kasutajat ei ole olemas
Lahendus
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Autor:Andres Mill A22 amill@itcollege.ee
#Versioon:0.1
#Viimane muutmise kuupäev:23.05.2011
#Skript kontrollib, kas kasutaja on lukus.
#Impordime sys ja os moodulid
#sys moodulit kasutame k2surea parameetrite lugemiseks.
#os moodulit kasutame õiguste kontrolliks.
import sys
import os
#Kontrollime, kas skript on käivitatud õigel kujul
#Kui on, defineerime muutuja kasutaja, mis sisaldab otsitavat kasutajanime.
#Kui ei ole, teatame kasutajale, mis kujul skript tuleb käivitada ja väljume skritist
if len(sys.argv) == 2:
kasutaja = (sys.argv[1])
else:
print "Käivita skript kujul: python %s kasutajanimi"%(sys.argv[0])
exit(0)
#Kontrollime, kas skript on käivitatud root õigustes.
#Kui ei ole, teatame kasutajale, et käivita skript uuesti vastavates õigustes.
if os.getuid() != 0:
print "Käivita skript root õigustes!"
exit(0)
#Avame /etc/shadow faili, kus saame kontrollida, kas kasutaja on lukus.
fh=open("/etc/shadow")
#Abimuutuja, millega saame kontrollida, kas kasutaja on olemas.
i=0;
#Käime foriga kõik read läbi.
#Kui kasutaja on reas olemas, kontrollime, kas kasutaja on lukus.
#Kui reas on symbolid :!, siis on kasutaja lukus.
for line in fh.readlines():
if kasutaja in line :
i=i+1
if ":!" in line :
print "Kasutaja %s on lukus"%(kasutaja)
else :
print "Kasutaja %s pole lukus"%(kasutaja)
#Kui i väärtus on 0, siis kasutajat pole olemas.
#Kui i väärtus on 1, siis kasutaja on oleas.
if (i==0):
print "Kasutajat %s ei ole olemas."%(kasutaja)
#Sulgeme faili.
fh.close()
Bash
Ülesanne
Teha skript user_in_group.sh mis kontrollib, kas etteantud kasutaja kuulub etteantud gruppi.
Tagastab 0, kui kuulub ja 1 kui ei kuulu.
user_in_group.sh <kasutaja> <grupp>
Lahendus
#!/bin/bash
#Author: Andres Mill
#Rühm: A22
#Version: 0.1
#Viimane muutmise kuupäev: 11.05.2011
#Skript kontrollib, kas kasutaja kuulub etteantud gruppi või mitte.
#Kontrollime mitme parameetriga programm on käivitatud,
#kui parameetrite arv ei ole kaks,siis väljutakse programmist
#ja andakse teada, et käivita skript uuesti sellisel kujul.
if [ $# -ne 2 ]; then
echo "Käivita skript uuesti kahe parameetiga kujul $(basename $0) kasutaja grupp"
exit 1
fi
#Vaatame, mis grupidesse kasutaja kuulub.
#Vaatame, kas kasutaja kuulub gruppi
#Kui grepimise tulemusel ridade arv ei ole null, antakse teada,et kasutaja kuulub gruppi.
#Kui grepimisega leitud ridade arv on null teatatakse, et kasutaja ei kuulu gruppi.
if [ $( groups $1|grep $2 -c) != 0 ]; then
exit 0
else
exit 1
fi