User:Otuur

From ICO wiki
Jump to navigationJump to search

PowerShell Suurimad failid

# Loome uue taski Task Scheduleri jaoks, ehk viimane käivitab iga nädal skripti, peale esimestkasutamist võib selle välja kommenteerida
schtasks.exe /Create /TN Suured_failid /SC WEEKLY /MO 1 /TR "PowerShell.exe -file C:\skriptid\powersell_kodutöö.ps1 -WindowStyle Hidden -NoLogo -NonInteractive"
# Skript, mis otsib kõige suuremaid faile arvutist ja saadab need soovitud meilile
# Autor: Olle Tuur, otuur@itcollege.ee
# Versioon: 0.4
#Ütleme kasutajale, mis toimub
echo "Sinu arvutist $(hostname) otsitakse suuremaid faile, see on automaatne tegevus, mis võib veidi aega võtta, palun ole kannatlik."

#Muutujad-----------------------------------------------------------------Muutujad#
[int]$mitu=6
[string]$failinimi="C:\skriptid\$(hostname)" #Sisesta vastavalt oma soovile täispikk faili asukoht (faili lõppu lisatakse kuupäev ja faili formaat hiljem)
#Ära unusta ka muuta meili aadresse ja smtp serverit allpool!!!#

#Lisab failinime lõppu aasta kuu ja päeva ning formaadi
$eristaja = get-date -uformat "%Y%m%d"
$failinimi2 = "$failinimi"+"_"+"$eristaja"+".txt"

#Loe kõik kettad arraysse. CDRom'e ei uurita
[array]$kokku = [System.IO.DriveInfo]::GetDrives() | where {$_.DriveType -ne "CDRom"}

#Loome uue faili, mida kasutaja soovis ja kirjutame sinna millal fail loodud on
echo "Fail on loodud $(date)" | out-File $failinimi2

#FOR tsükkel, mis määrab ära milliselt kettalt otsida
for($i=0; $i -lt $kokku.Length; $i++){
    
    [string]$kust = $kokku[$i].RootDirectory
    [string]$nimi = $kokku[$i].Name
    
    if($mitu -eq 1){
         echo "$nimi kõige suurem fail on:" | Out-File -filepath $failinimi2  -append
    }else{
         echo "$nimi $mitu Kõige suuremat faili on:" | Out-File -filepath $failinimi2  -append
    }
    
    #Iga Ketta X suurimat faili
    Get-ChildItem $kust -Recurse -ErrorAction "SilentlyContinue" | sort length -Descending | select -First $mitu Name, Length | Out-File -filepath $failinimi2  -append
    }

#NB! Ära unusta siia lisada oma andmeid!
#Saada meil
$smtpserver = smtp.minuserver.ee #Siia kirjuta oma SMTP serveri aadress
$message = new-object Net.Mail.MailMessage
$att = new-object Net.Mail.Attachment($failinimi2)
$smtp = new-object Net.Mail.SmtpClient($smtpserver)
$smtp.EnableSsl = $True
$message.From = kust@minuserver.ee #Saatja meiliaadress
$message.To.Add(kuhu@minuserver.ee) #Saaja meiliaadress
$message.Subject = Kõige suuremad failid ( $(date) ) #E-maili pealkiri
$message.Body = $failinimi on lisatud manustesse. #E-Maili sisu ( tekst )
$message.Attachments.Add($att)
$smtp.Send($message)

$att.Dispose()
$message.Dispose()
Remove-Item $failinimi2

Quest3

#!/bin/bash
#Autor: Olle Tuur, otuur@itcollege.ee
#Versioon 0.3
#Exit väärtused
#0 - skript lõpetas edukalt tegevuse
#1 - kasutajal ei ole juurkasutaja õigusi
#2 - arvutis on liiga vähe kerneleid

#Kas kasutajal on vajalikud õigused?
if [ $UID -ne 0 ]; then
	echo "$(basename $0) käivitamiseks, pead olema juurkasutaja!"
	exit 1
fi

#Teatame, kasutajale, millega ta riskib
echo "See skript kustutab kõik vanad kernelid peale kahe kõige uuema."
echo "Jätka juhul, kui oled täiesti kindel, et ei vaja enam vanemaid kerneleid."
echo ""
echo "Kas soovid jätkata? (Jätkamiseks sisesta Y ja vajuta ENTER):"

read JATKA

#Kui kasutaja soovib jätkata
if [ $JATKA == "Y" ] || [ $JATKA == "y" ]; then

	echo "Hetkel on kasutusel versioon $(uname -r | cut -d'-' -f1,2)"
	echo ""
	echo "Skript leidis sinu arvutist järgnevad kernelid:"
	
	#Array, kus on kõik kernelid, mis leiti
	OLEMAS=($(ls /boot | grep vmlinuz | cut -d'-' -f2,3))
	
	#Array pikkus
	PIKKUS=${#OLEMAS[@]}
	
	#Trükime välja olemasolevad kernelid
	for((i=0; i<${PIKKUS}; i++));
	do
		echo ${OLEMAS[$i]}
	done	

	#Kas on olemas üle 2 kerneli?
	if [ ${PIKKUS} -lt 3 ]; then
		echo "Kahte kernelit ei saa alles jätta. Sul on ainult ${PIKKUS} kernel(it)."
		echo "Skript lõpetab töö."
		exit 2
	fi

	#Mitu võib kustutada
	KUSTUTA=$[PIKKUS-2]
	
	#Ütleme, mitu kernelit kustutatakse
	echo "Kustutatakse ${KUSTUTA} kernel(it)"

	for((j=0; j<${KUSTUTA}; j++));
	do
		#Teavitame, mis kustutatakse		
		echo "Kerneliga ${OLEMAS[$j]} seotud paketid, mis eemaldatakse:"
		echo $(dpkg -l | grep ^ii | grep ${OLEMAS[$j]} | awk -F' ' '{ print $2 }')
		#Kustutame
                apt-get remove $(dpkg -l | grep ${OLEMAS[$j]} | awk -F' ' '{ print $2 }')
	done
	
	
#Teavitame kasutajat töö lõpetamisest
echo "Tehtud!"
exit 0
fi