User:Uluuk

From ICO wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Quest 4 - Bash

#!/bin/bash
#author: Urmas Luuk
#group: A22
#version: 0.1
echo ""

#kirjutan tĆ¼Ć¼p tekstid muutujasse:
textHowToUse="Skripti kƤivitamiseks toimi jƤrgnevalt: $(basename $0) <ketas>"
textSample="NƤide: trash.sh /dev/sdb"

#Kontrollib, kas kasutajal on juurkasutaja Ƶigused
if [ $UID -ne 0 ]; then
  echo "KƤivita antud skripti $(basename $0) juurkasutaja Ƶigustes"
  exit 1
fi

echo "Antud skript Ć¼hendab lahti etteantud kettajaod ja saalealad"
echo "ning kustutab kƵik partatsioonid!"
echo ""

#Kontrollib, kas on esimene parameeter mƤƤratud ja kui ei ole siis Ƶpetab kuidas mƤƤrata
#Kui on mƤƤratud siis kontrollib kas selline ketas on olemas
if [ -z $1 ]
then
  echo "$textHowToUse"
  echo "$textSample"
  exit 1
fi

#Informeerib kastuajat, et antud skript kasutab ainult Ć¼hte parameetrit 
#ja Ć¼lejƤƤnuid ignoreeritakse
if [ $# -gt 1 ]; then
  echo "Hoiatus! Ainult Ć¼hte parameetrit vajatakse, Ć¼lejƤƤnuid ignoreeritakse"
  echo ""
fi

#Kontrollib kas kasutaja sisestatud tekstile vastab ka ketast
if [ -z "$(fdisk -l | grep -w $1)" ]; then
  echo "Ei leitud $1 ketast"
  echo ""
  echo "$textHowToUse"
  echo "$textSample"
  echo ""
  exit 1
fi

#kirjutan kasutaja sisestatud vƤƤrtuse muutujasse
device=$1

#kontrollib kas kettal on tĆ¼hi
if [ "$(fdisk -l $device | grep -c $device)" -le 1 ]; then
  echo "$device ei ole Ć¼htegi partatsiooni"
  echo ""
  exit 1
fi

#Hoiatab mida antud skript teeb ja kĆ¼sib kasutajalt kas soovib jƤtkata
echo "HOIATUS! Ɯhnedatakse lahti $device kettajaod ja saalealad"
echo "         ning kustutatakse kƵik partatsioonid Ƥra"
echo ""
echo ""
read -p "Kas soovid jƤtkata (y - jah)?" -n 1
echo ""
if [[ $REPLY =~ ^[^Yy]$ ]]
then
  echo "Skripti protsess ketkestatud"
  echo ""
  exit 2;
fi

echo "Alustab kettajagude lahtiĆ¼hendamist:"

#Kontrollitakse mis ketta partatsioonid on kĆ¼lge Ć¼hendatud ja Ć¼hendab need lehti
for result in "$(mount -s | grep  $device)"; do
  if [ -n "$result" ]; then
    set -- $result
    dev=$1
    shift
    echo "> unmount: $dev"
    umount $dev
    wait
  fi
done

echo "valmis!"
echo "Alustab swapide lahti Ć¼hendamist:"

#Kontrollib mis saale alad on kĆ¼lge Ć¼hendatud ja Ć¼hendab need lahti
for result in "$(swapon -s | grep $device)"; do
  if [ -n "$result" ]; then
    set -- $result
    dev=$1
    shift
    echo "> Swapoff: $dev"
    swapoff $dev
    wait
  fi
done

echo "valmis!"
echo ""

#Hoiatus enne ketta partatsioonide kustutamist
echo "Alustatakse partatsioonide kustutamisega"
echo ""
read -p "Kas soovid jƤtkata (y - jah)" -n 1
echo ""
if [[ $REPLY =~ ^[^Yy]$ ]]
then
  mount -a
  wait
  swapon -a
  wait
  echo "Skripti protsess katkestati"
  echo "Kettad Ć¼hendati tagasi kĆ¼lge"
  echo ""
  exit 2;
fi

if [ -n "$(fdisk -l $device | grep -w ${device}1)" ]; then
fdisk "$device" <<EOF1
d
1
w
EOF1
fi
if [ -n "$(fdisk -l $device | grep -w ${device}2)" ]; then
fdisk "$device" <<EOF2
d
2
w
EOF2
fi
if [ -n "$(fdisk -l $device | grep -w ${device}3)" ]; then
fdisk "$device" <<EOF3
d
3
w
EOF3
fi
if [ -n "$(fdisk -l $device | grep -w ${device}4)" ]; then
fdisk "$device" <<EOF4
d
4
w
EOF4
fi

echo "valmis!"
exit 0;

Quest 5 - Python

#!/usr/bin/python
# -*- coding: utf-8 -*-
# author: Urmas Luuk
# group: A22
# version: 0.1

import sys
import os
import os.path
import subprocess as sp

print "Antud skript kontrollib faili olemasolu ja sellele antud õigusi"

#Kontrollin kas on sisestatud piisavalt parameetreid
if len(sys.argv) <= 2:
    print "Argumendid määramata"
    print "Õigused tuleb kirjutada tekstina nt. rw-r--rwx"
    print "%s <sisendfail> <õigused>" %(sys.argv[0])
    exit()

#Määran sisestatud parameetritele muutujad.
inputPermission = sys.argv[2]
inputFile = sys.argv[1]

#Kontrollin kas teine paramteer on tekst ja/või õige pikkusega, kui ei ole siis exit 0
if (inputPermission.isdigit()) or (len(inputPermission) != 9):
    print "Vigane argument: %s" % (inputPermission)
    print "Õigused tuleb kirjutada tekstina nt. \"rw-r--rwx\""
    print "%s <sisendfail> <õigused>" %(sys.argv[0])
    exit(0)

#Leian sisendfaili õigused
popen = sp.Popen(["ls", "-l", inputFile], stdout=sp.PIPE)
sout, serr = popen.communicate()
inputFilePermission = sout[:10][1:]

#Kontrollin kas sisestatud fail eksisteerib, kui ei siis exit 1
if (not os.path.exists(inputFile)) or (os.path.isdir(inputFile)):
    print "Ei leitud %s faili" % (inputFile)
    exit(1)

print "Sisestatud õigused:" + inputPermission
print "Faili õigused: " + inputFilePermission

#Kontrollin kas sisestatud õigused klapivad faili õigustega.
if inputFilePermission[0:3] != inputPermission[0:3]:
    print "2"
    exit(2)
elif inputFilePermission[3:6] != inputPermission[3:6]:
    print "3"
    exit(3)
elif inputFilePermission[6:9] != inputPermission[6:9]:
    print "4"
    exit(4)

Powershelli kodutöö

#Author: Urmas Luuk
#Group: A22
#Version: 0.3
#
#Skript kontrollib, kas eksisteerib antud kasutajat või mitte, 
#kui ei siis pakub võimalust seda luua(antud kasutajat lisatakse ka siis administraatori gruppi).

param ([string] $reqUser)

#Kontrollin, kas kausutaja on käivitanud skripti admini õigustega.
if(-NOT([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
	Write-Warning "Sa pead olema administraatori õigustega, et käivitada antud skripti!"
	exit 1
}

#Vaatan kas parameetrisse on määratud kasutajanimi
if ($reqUser -eq "")
{
    Write-Host "Kasutaja nimi tuleb kirjutada parameetrisse. Näide: "$MyInvocation.MyCommand.Name" <kasutajanimi>"
    exit 1
}

$computer = [ADSI]("WinNT://"+ $env:COMPUTERNAME)
$Users = $computer.psbase.children | where{$_.psbase.schemaclassname -eq "User"}

#Kontrollin, kas eksisteerib antud kasutaja
foreach ($member in $Users.psbase.syncroot)
{
    if ($member.name -eq $reqUser)
    {
        Write-Host "Kasutaja ""$reqUser"" on olemas"
        exit 0
    }
}

#Küsin kasutaja käest, kas tahab luua uut kasutajat
Write-Host "Ei leitud kasutajat:"$reqUser
$confirm = Read-Host "Kas luua antud kastuaja? (jah - y)"

if ($confirm -ne "y")
{
    exit 1
}


#küsin kasutaja käest uue kasutaja parooli.
$match=0
do
{
    $password = Read-Host "Kirjuta parool: "
    $confirm = Read-Host "Korda parooli: "
    if ($password -eq $confirm)
    {
        $match=1
    }
    else
    {
	   Write-Host "Salasõnad ei kattu, proovi uuesti"
    }
}
while ($match -eq 0)

#loon uue kasutaja
$createUser = $computer.Create("User", $reqUser)
$createUser.SetPassword($password)
$createUser.SetInfo()

Write-Host "Loodi uus kasutaja ""$reqUser"""

#küsin kasutaja käest kas lisada ka kasutaja admini gruppi.
$confirm = Read-Host "Kas lisada antud kasutaja ka administratori gruppi? (jah - y)"

if ($confirm -ne "y")
{
    exit 1
}

#Lisan loodud kasutaja Administrator gruppi.
$group = [ADSI]("WinNT://" + $env:COMPUTERNAME + "/Administrators,group") 
$group.add("WinNT://" + $env:COMPUTERNAME + "/$reqUser")

Write-Host "Lisati kasutaja ""$reqUser"" Administratori gruppi"