Administriranje IT sustava

Repozitorij korisnih admin-skripti

vlad0 uto 16.11.2010 16:04

Osnovna ideja kod pokretanja ove teme je da napravimo svojevrtan repozitorij korisnih skripti koje nam svima mogu pomoći kod svakodnevnih admin taskova. Idealno bi bilo da stavljate svoje skripte, ali ako naletite na neku zgodnu na Netu i mislite da bi bila korisna nitko vam ne brani da ju postate. U tom slučaju bi svakako bilo poželjno da takve skripte istestirate prije objavljivanja kako ne bi završili sa hrpom postova "Uh, sorry što ne radi - nisam ni ja probao, samo sam c/p odnekud". Naravno, diskusije i kritike skripti, kao i rasprave o mogućim poboljšanjima su poželjnje sve dok su konstruktivne.

 

 

!!VAŽNO!! Uz sam kod skripte, popunite i dodatna polja da bi drugima omogućili brže snalaženje i pretraživanje:

 

Naziv i verzija: ...

Kratki opis: ...

Vrsta: ...

Programi i/li biblioteke potrebne za rad: ...

Dodatne napomene: ...

Kod: ...

Primjer korištenja: ...

 

 

Evo, otvorit ću temu sa jednom vlastitom koju sam baš složio prije pola sata da dobijete ideju kako bi to moglo izgledati:

vlad0 uto 16.11.2010 16:04

Naziv i verzija:

MiniARPing 1.0a (by Vlad0)

 

 

Kratki opis:

Vraća IP i MAC adrese za traženi FQDN (Fully Qualified Domain Name).

 

 

Vrsta:

Windows batch

 

 

Programi i/li biblioteke potrebne za rad:

- Ping

- ARP

 

 

Dodatne napomene:

Radi samo u LAN-u (ograničenje zbog ARP-a).

 

 

Kod:

miniarping.bat

REM MiniARPing 1.0a (by Vlad0)@ECHO OFFSET IP=SET IPduzina=SET MAC=FOR /F "tokens=2,3 delims= " %%A IN ('PING -n 1 %1') DO IF "%%A"=="%1" SET IP=%%BSET IP=%IP:[=%SET IP=%IP:]=%SET IP=%IP: =%SET #=%IP%SET IPduzina=0:loopIF DEFINED # (SET #=%#:~1%&SET /A Ipduzina += 1&GOTO :loop)if %IPduzina% LSS 7 GOTO :neidepingFOR /F "delims=" %%A IN ('ARP -a %IP%') DO SET MAC=%%ASET MAC=%MAC: =%CALL SET MAC=%%MAC:~%IPduzina%,17%%GOTO :ispis:neidepingSET IP=N/ASET MAC=N/A:ispisECHO ===============================ECHO  FQDN: %1ECHO -------------------------------ECHO  IP adresa: %IP%ECHO  MAC adresa: %MAC%ECHO ===============================

 

 

Primjer korištenja:

miniarping.bat pingable.nekadomena.local
===============================
 FQDN: pingable.nekadomena.local
--------------------------------------------------------
 IP adresa: 192.168.0.123
 MAC adresa: 00-0e-0c-33-22-1a
===============================

miniarping.bat unpingable.nekadomena.local
===============================
 FQDN: unpingable.nekadomena.local
--------------------------------------------------------
 IP adresa: N/A
 MAC adresa: N/A
===============================

cekpi uto 16.11.2010 17:01

Naziv i verzija:

QUEUE Izvještaj na e-mail by cekpi (picek1@gmail.com
 

 

Kratki opis:

Powershell skripta koja provjera queue stanje na exchange 2007/2010 serveru

 

Vrsta:

Exchange powershell/Windows  batch

 

 

Programi i/li biblioteke potrebne za rad:

- Exchange powershell

 

 

Dodatne napomene:

Ne kuha kavu

 

### naziv e-mail servera
$smtpServer = "FQDN exchange servera (hub ili edge rola)"

### skupljanje statistike
$b = Get-Queue | fl | out-string

### Kreiranje nove poruke
$msg = New-Object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer)

### Definiranje kome se i od koga se šalje
$msg.From = ("administrator@mojadomena.com")
$msg.To.Add("moje.ime@mojdomen.com")

### Naziv poruke
$msg.Subject = "Queue na XY serveru"

### Dodavanje statistike u tijelo e-mail-a
$msg.Body = "Dragi moji Admini, u privitku Vam se nalazi izvještaj. Ugodan dan želi Vam skripta"
$msg.Body = $b

### Slanje poruke
$smtp.Send($msg)

 

 

Korištenje:

- spremanje kao *.ps1 i ručno pokretanje kroz shell

- Pokretanje ručno ili putem schedulera preko batch skrpte koja glasi:

    @echo off
PowerShell.exe -PSConsoleFile "E:\Exchange 2007\bin\exshell.psc1" -Command "C:\skripte\QUEUE_SKRIPTA\slanje_queue.ps1"

cekpi sri 17.11.2010 10:54

Naziv i verzija:

Mailbox statistika na e-mail by cekpi (picek1@gmail.com
 

 

Kratki opis:

Powershell skripta koja provjera zapunjenost pojedinog mailbox-a naExchange 2007/2010 serveru

 

Vrsta:

Exchange powershell/Windows  batch

  

Programi i/li biblioteke potrebne za rad:

- Exchange powershell

  

Dodatne napomene:

Ni ova ne kuha kavu

 

###Naziv e-mail servera
$smtpServer = "FQDN exchange servera"

###Skupljanje i sortiranje mailbox statistike
Get-Mailbox -OrganizationalUnit "OU u kojem se nalaze useri" | get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label="TotalItemSize(MB)";expression={$_.TotalItemSize.Value.ToMB()}} , storagelimitstatus > mailboxes.txt

###Skupljanje informacija o limitima za pojedinog usera
get-Mailbox -OrganizationalUnit "OU u kojem se nalaze useri" | ft name, issuewarningquota >> mailboxes.txt

###Kreiranje e-mail poruke i dodavanje attachmenta
$msg = New-Object Net.Mail.MailMessage
$att = new-object Net.Mail.Attachment("mailboxes.txt")
$smtp = new-object Net.Mail.SmtpClient($smtpServer)

###Slanje poruke
$msg.From = ("administrator@mojadomena.com")
$msg.To.Add("moje.ime@mojadomena.com")
$msg.Subject = "Informativni podatak o tome koliko megabajta tuđih mejlova moraš pročitati"
$msg.Body = "Dragi moji Admini, u privitku Vam se nalazi ono uz subject polja. Ugodan dan želi Vam skripta."
$msg.Attachments.Add($att)
$smtp.Send($msg)

###Puštanje attachmenta
$att.Dispose()

 

Korištenje:

- spremanje kao *.ps1 i ručno pokretanje kroz shell

- Pokretanje ručno ili putem schedulera preko batch skrpte koja glasi:

PowerShell.exe -PSConsoleFile "E:\Exchange 2007\bin\exshell.psc1" -Command "C:\skripte\mailbox_statistika\slanje2.ps1"

vlad0 sri 26.1.2011 10:11

Naziv i verzija:

ISADeleteCacheContent 1.0

 

Kratki opis:

Briše sadržaj cache datoteka ISA servera.

 

Vrsta:

VBS

 

Dodatne napomene:

Resetira Firewall servis (što može potrajati koju minutu).

 

Kod:

Sub DeleteCacheContents()Dim rootSet root = CreateObject("FPC.Root")Dim serverDim cacheDrivesDim cacheDriveDim fsoSet server = root.GetContainingServer()server.StopFirewallService()Set cacheDrives = server.CacheDrivesSet fso = CreateObject("Scripting.FileSystemObject")For Each cacheDrive In cacheDrivescacheFilePath = CacheDrive.Name & "\urlcache\Dir1.cdat"fso.DeleteFile cacheFilePathNextserver.StartFirewallService()WScript.Echo "ISA chache datoteke su prazne."End SubDeleteCacheContents

 

Primjer korištenja:

Spremiti kod kao ISADeleteCacheContent.vbs i onda dvoklik na nju.

woodgamesfx sri 26.1.2011 12:37

Mapiranje mrežnog diska :

 

 

on error RESUME NEXT

strDrive = "Z:"

strPath = "\\share\share

strUser = "DOMENA\korinsik

strPassword = "sifra_sustava"

boolPersistent = True ' True = Persistent ; False = Not Persistent

set objNetwork = WScript.CreateObject("WScript.Network")

objNetwork.MapNetworkDrive strDrive, strPath, boolPersistent, _

 strUser, strPassword

msgbox( "Disk je mapiran ")

 

 

 

Spremite kao VBS , mjenjate podcrtane vrijednosti , meni ovo pomoglo dosta puta.

 

Korištenje mrežnog printera i vezanje na LPT 

 

 

@echo off

net use lpt1 /d

net use lpt1 \\192.168.100.113\SamsungPrinter /p:Yes

 

 

Spremite kao BAT i pokrenete mjenjate podcrtano.

 

 

vlad0 uto 22.2.2011 21:28

Naziv i verzija:

PortStat 1.0a (by vlad0)

 

Kratki opis:

Daje detaljne informacije o procesu koji "sjedi" na nekom lokalnom TCP portu.

 

Vrsta:

Windows batch

 

Programi i/li biblioteke potrebne za rad:

netstat (dolazi s Windowsima)

tasklist (dolazi s Windowsima)

 

Dodatne napomene:

EDIT: Na Windows Vista i 7 OS-evima cmd mora biti pokrenut s elevated ovlastima da bi netstat i tasklist radili kako treba.

Skripta gleda samo portove u LISTENING stanju. Ako vam trebaju dodatna stanja, editirajte kod skripte (pogledajte netstat info).

Ako vam trebaju dodatne informacije o procesu, editirajte kod skripte (pogledajte tasklist info).

 

Kod:

PortStat.bat

@ECHO OFF
ECHO.
SET pid=
FOR /F "delims=" %%a in ('netstat -anob -p TCP ^|findstr ":%1" ^|findstr "LISTENING"') DO SET pid=%%a

IF DEFINED pid (
GOTO pidpostoji
) ELSE (
GOTO pidnepostoji
)

:pidpostoji
ECHO   Proto  Local Address          Foreign Address        State           PID
ECHO===============================================================================
ECHO %pid%
SET pid=%pid:~-11%
FOR /f "tokens=* delims= " %%a in ("%pid%") DO SET pid=%%a
tasklist /fi "PID eq %pid%"
tasklist /fi "PID eq %pid%" /svc
tasklist /fi "PID eq %pid%" /m
GOTO kraj

:pidnepostoji
ECHO Port %1 is not taken.
ECHO.

:kraj

 

 

Primjer korištenja:

PortStat PORT

 

portstat 80


  Proto  Local Address          Foreign Address        State           PID
==============================================================================
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       6080

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
httpd.exe                     6080 Services                   0     15.280 K

Image Name                     PID Services
========================= ======== ============================================
httpd.exe                     6080 wampapache

Image Name                     PID Modules
========================= ======== ============================================
httpd.exe                     6080 ntdll.dll, wow64.dll, wow64win.dll,
                                   wow64cpu.dll

 

portstat 25


Port 25 is not taken.

 

@mbaksa

Hvala za ideju! {#}

Bypass sri 23.2.2011 23:08
mihaeeel kaže...

moze linux ilti unix verzija sa perlom i pythonom? :)

ajde neka "smisljator" teme napravi novu sa linux skriptama, tako da nam bude svima lakse...:)

Stvar je u tome da za lnux servere ne trebaš izmišljati toplu vodu sa tamo nekim skriptama. Bash shell je sasvim dovoljan i 4 000 godina ispred batcha i onog smijeha od windows "power" shell-a.

vlad0 čet 24.2.2011 19:11

@mihaeeel

Mislim da nema potrebe za otvaranjem zasebne teme - postoji predviđeno polje "Vrsta" u kojem kažeš za koju platformu je skripta namjenjena. To što su dosad svi postali skripte za Windoze ne znači ništa (osim možda da su Win admini aktivniji od svojih *nix kolega, hehe;).

 

@Bypass

Nemoj se ljutiti, ali PowerShell prvo treba znati koristiti (jednako kao i bash), a tek onda suditi o njemu. A netko tko je proveo X vremena razvaljujući PS sigurno neće davati takve izjave jer zna da je riječ o vrlo, vrlo moćnom alatu.  Mogu se doduše složiti da je usporedba batch-bash na razini mogućnosti bespredmetna, ali takve usporedbe ionako nemaju baš previše smisla. Batch je u krajnoj liniji također alat - možda nešto jednostavniji - ali ako se nešto može obaviti / automatizirati koristeći upravo batch, ne vidim zašto to ne iskoristiti tu mogućnost. Krajnji cilj je ionako ušteda vremena i smanjivanje mogućnosti pogrešaka, pa ako je to doista i ostvareno, ne vidim zašto bi se itko bunio oko načina stizanja do cilja?

 

 

 

@svi

Samo da raščistimo unaprijed: ovo nije tema za Windows / *nix flame warove, držite se teme. Ako želite raspravljati o razlikama između Windowsa i *nixeva, iskoristite neku već postojeću temu na Bug forumu. Ovdje su tema korisne admin skripte, bez obzira na platformu. Hvala na razumijevanju.

cekpi pet 25.11.2011 09:15

MS Community je objavio besplatan priručnik za upravljanje Windows Server 2008 R2 Core inačicama poslužitelja.

 

Priručnik je na hrvatskom jeziku i mislim da svatko ko ima ili razmišlja o core edicijama bi trebao bacit pogled.

 

Obrađene teme su:

- Značajke Core edicija

- Instalacija i aktivacija

- Inicijalno podešavanje

- Uobičajene administrativne radnje

- Pregled CLI naredbi

 

 

http://www.mscommunity.hr/News/Details/fa1c57da-f8c3-4adf-ab8a-990923800b45

ivo_svetrice pon 16.1.2012 23:36

Naziv i verzija:

BriseTmp 1.2

 

Kratki opis:

Briše sadržaj temporary mapa od "current user" i Windows(%SystemRoot%).

 

Vrsta:

Windows batch

 

Dodatne napomene:

Nema upozorenja i obavijesti (pogodan kao dio veče skripte).

 

Kod:

BriseTmp.bat   

@echo offFOR /F "DELIMS=" %%? IN ('DIR/B/AD %TEMP%\*') DO RD/S/Q "%TEMP%\%%~?" >nul 2>&1DEL/F/A/Q %TEMP%\*.*  >nul 2>&1DEL/F/A/Q %SystemRoot%\temp\*.*  >nul 2>&1

 

 

Korištenje:

- Samo pokreni i pomoli se.

 

 

vlad0 čet 23.2.2012 11:31

Naziv i verzija:
Hyper-V Export 0.5



Kratki opis:

Exportira definirane VM-ove koji se vrthe na Hyper-V platformi. Korisno ako se npr. želi napraviti brzi full backup VM-ova.



Vrsta:

Windows PowerShell 1.0



Dodatne napomene:

1. Ako već niste, morat ćete podesiti PS execution policy da bi se ovo moglo odvrtiti:

set-executionpolicy remotesigned

2. Prije pokretanja promijenite nazive $guest varijabli tako da odgovaraju nazivima vaših VM-ova u Hyper-V-u (u expbackup.ps1). Možete slobodno dodavati / brisati VM-ove iz ovog popisa i backupirati samo one koje želite.
3. Prije pokretanja promijenite $script_dir i $dest varijable (u expbackup.ps1) kako vam odgovaraju.



Kod:

expfunction.ps1
$VM_Service = get-wmiobject -namespace root\virtualization Msvm_VirtualSystemManagementService
$VM = gwmi -namespace root\virtualization -query "select * from msvm_computersystem where elementname='$guest'"   
$VMReturnState = $VM.EnabledState   
$VMName = $VM.ElementName   

if (($VM.EnabledState -eq 2) -or ($VM.EnabledState -eq 32768) -or ($VM.EnabledState -eq 32770))   
{       
   $VM.RequestStateChange(32769)       
   $curtime = get-date -f HH:mm:ss       
   echo "$curtime >> Spremanje stanja: $VMName"   
}   

while (!($VM.EnabledState -eq 32769) -and !($VM.EnabledState -eq 3))   
{       
    Start-Sleep(1)       
    $VM = get-wmiobject -namespace root\virtualization -Query "Select * From Msvm_ComputerSystem Where ElementName='$VMName'"   
}
    $curtime = get-date -f HH:mm:ss
    echo "$curtime >> Exportiranje..."
    $status = $VM_Service.ExportVirtualSystem($VM.__PATH, $True, "$dest\$timestamp")
    if ($status.ReturnValue -eq 4096)
    {
        $job = [Wmi]$status.Job
       while (!($job.PercentComplete -eq 100) -and ($job.ErrorCode -eq 0))
        {
            Start-Sleep(10)
            $job = [Wmi]$status.Job
            $curtime = get-date -f HH:mm:ss
         $curperc = $job.PercentComplete
         echo "$curtime >> $curperc%"
        }
    }

$curtime = get-date -f HH:mm:ss
echo "$curtime >> Backup dovrsen i spremljen u $dest\$timestamp\$VMName"
echo ""
$VM.RequestStateChange($VMReturnState)

 

expbackup.ps1

$script_dir = "X:\putanja_do_skripte"
$dest = "X:\putanja_do_backup_mape"
$timestamp = Get-Date -f yyyy-MM-dd_HH-mm

$guest = "Naziv_VM_01"
. "$script_dir\expfunction.ps1"
Start-Sleep(60)

$guest = "Naziv_VM_02"
. "$script_dir\expfunction.ps1"
Start-Sleep(60)

$guest = "Naziv_VM_02"
. "$script_dir\expfunction.ps1"



Primjer korištenja:

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe X:\putanja_do_skripte\expbackup.ps1

Franjic uto 5.2.2013 12:29

 

 

Naziv i verzija:

ThumbnailPhoto 1.0 (by: Marko Franjić)

 

Kratki opis:

Postavlja sliku u ad atribut, zatim se slika replicira u Outlook

 

Vrsta:

PowerShell

 

Programi i/li biblioteke potrebne za rad:

EMS

 

Kod:

function Import-Picture ($Path, $Identity)

{

 

   $Lenght       = ([System.IO.FileInfo]$Path)

   $Extension     = ([System.IO.DirectoryInfo]$Path)

 

 

   if (!([System.IO.File]::Exists($Path)))

   {

     Write-Host "Vaša putanje je nevaljana: $path"

   }

   elseif([System.IO.File]::Exists($Path))

   {

     if ($lenght.Length -gt 10000)

     {

       Write-Host 'File sadrži veličinu veču od dopuštene'

     }

     elseif($lenght.Length -lt 10000)

     {

       if ( $Extension.Extension -eq '.jpg')

       {

         Import-RecipientDataProperty -Identity $Identity -Picture -FileData ([Byte[]]$(Get-Content -Path $Path -Encoding Byte -ReadCount 0))

 

         Write-Host 'Slika postavljena'

       }

       else

       {

       Write-Host 'File mora sadržavati ".jpg" ekstenziju'

       }

     }

   }

}

 

 

Primjer korištenja:

Import-Picture -Path 'C:\User\Pcitures\test.jpg' -Identity 'pero.peric'

 

 

Smooth Operator sri 6.2.2013 11:02

Popis korisnih Exchange skripti (hvala cekpiju na pomoći oko Exchangea):

 

Dobij mailbox GUID:

 

Get-MailboxStatistics -Database "mailbox baza" | Where-Object {$_.DisconnectDate -Notlike $NULL} | FL DisplayName, DisconnectDate, MailboxGuid

 

 

Briši usera iz diskonektanih usera:

 

Remove-Mailbox -Database "mailbox baza" -StoreMailboxIdentity MailboxGuid

 

 

Postavke imena foldera (Inbox- Primljeno, itd):

Set-MailboxRegionalConfiguration -Language “en-EN” -Identity "ime.prezime" -LocalizeDefaultFolderName:$true

 

Dostupno en -EN, hr -HR, de -DE...

 

 

 

Veličina mailboxeva:

 

Get-MailboxDatabase "mailbox baza" | Get-MailboxStatistics | Sort totalitemsize -desc | ft displayname, totalitemsize, itemcount

 

 

 

Briši whitespace u bazi:

Clean-mailboxdatabase –identity "Mailbox baza"

 

 

Vraćanje mailbox iz restorane baze:


1. Odabrati način vraćanja mailboxa (Windows server backup, Vmware flr)
2. Napraviti novi disk na mail serveru (R: u ovome slučaju)
3. Restorati bazu i logove
4. Otvoriti powershell i kucati:
- Provjeri ispravnost log fileova: eseutil /ml R:\logfiledb\E00
- Stavi bazu u clean shutdown: eseutil /r E00 /i /l R:\logfiledb\ /d 'R:\mailboxdb\recovering.edb'
- Provjeri bazu jeli u clean shutdownu: eseutil /mh 'R:\mailboxdb\recovering.edb'
- Ako nije, napravi repair i stavi je u clean shutdown: eseutil /p 'R:\mailboxdb\recovering.edb'
- Provjeri bazu jeli u clean shutdownu: eseutil /mh 'R:\mailboxdb\recovering.edb'
- Dodaj bazu u Exchange s drugim imenom: New-MailboxDatabase RecoveryDB -Server mail.firma.local -Recovery:$true –EdbFilePath 'R:\Mailboxdb\restoring.edb'
- Smontiraj bazu: Mount-Database RecoveryDB
- Provjeri dostupnost mailboxa s sličnim imenom: Get-MailboxStatistics -Database RecoveryDB | ?{$_.DisplayName -like 'ante*'}
- Vrati određeno ime u određeni mailbox iz određenog postojećeg foldera u novi folder: New-MailboxRestoreRequest -SourceDatabase RecoveryDB -SourceStoreMailbox 'Ime Prezime' –TargetMailbox 'Ime Prezime' -TargetRootFolder Restore -AllowLegacyDNMismatch -IncludeFolders '#Inbox#'

Alesandro pon 11.2.2013 23:29

Evo jedna sa mog bloga. Neznam koliko ce biti korisna "siroj" populaciji, posto je usko povezana sa hostingom :)

 

Skripta za rucno parsanje statistike ( Awstats ), tj. kada treba parsati stare log fileove. 

Skriptu treba spremiti u isti folder gdje se nalazi i awstats.pl i pretpostavlja da je perl instaliran u c:\perl

Detaljnije upute za koristenje - http://www.winblogs.net/index.php/2012/06/14/parse-old-log-files-with-awstats/

Skripta se pokrece kroz Powershell ( .\file.ps1 )

 

Function Awstats
{
param ($Dir = $(Read-host "Enter path to log files")),
($Website = $(Read-Host "Website name ( without www )?"))
$TargetFolder = $Dir
if (Test-Path $TargetFolder)
{
Write-host "Folder name is :" $TargetFolder -foregroundcolor "Red"
$Files = get-childitem $Dir\*.* -include *.log
$List = $Files | where {$_.extension -eq ".log"}
foreach ($File in $Files)
{
write-host "Updating statistics! Please wait." -foregroundcolor "Red";&'C:\perl\bin\perl.exe' awstats.pl config=$Website logfile=$File}
}
Else
{Write-Host "Folder $TargetFolder doesnt exist! Input correct path!" -foregroundcolor "Red"}
}
Awstats

Alesandro pon 11.2.2013 23:36

Skripta koja  premjesta log folder od svih webova na serveru u c:\logs\imeweba.tld

 

Ako folder ne postoji, kreira ga i u IIS-u podesi novi path

 

Korištenje : pokrenuti skriptu iz Powershella. 

 

 

Import-Module "WebAdministration" -ErrorAction Stop
foreach($site in (dir iis:\sites\*))
{
write-host $site.Name

if (!(Test-Path -path C:\Logs\$($site.Name)))
{
New-Item c:\Logs\$($site.Name) -type directory
}
Set-ItemProperty IIS:\Sites\$($site.Name) -name logFile.directory -value “C:\Logs\$($site.name)”
}

 

Alesandro pon 11.2.2013 23:42

Pošto SQL Express nema SQL Agent u kojemu se mogu scheduleati dumpovi baza, koristim sljedeci query za daily dump svih baza na tom SQL serveru ( osim tempdb )

Skripta u ovom slucaju sprema .bak fileove u E:\sqlbackups.

Taj path si izmjenite ako ne pase :)

 

Posto su sys admini po prirodi lijene bube, query se moze scheduleati kroz Task Scheduler.

Komanda koju treba pokretati je:

“C:\Program Files (x86)\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE” -i “c:\folder\sqlbackup.sql”

 

Path do sqlcmd.exe se moze razlikovati na vasem stroju. 

 

 

DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
SET @path = 'E:\sqlbackups\' --path to the backup folder
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('tempdb')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor

Alesandro pon 11.2.2013 23:45

Brisanje svih fileova iz nekog foldera i podfoldera koji su stariji od X dana. 

 

Koristenje : pokrenuti skriptu u powershellu. 

 

 

 

 

 

Function GetOldFile
{
param ($Dir = $(Read-host "Unesi putanju do direktorija")),
($Days = $(Read-Host "Brišem fileove starije od koliko dana?"))
$TargetFolder = $Dir
if (Test-Path $TargetFolder)

{
Write-host "DIREKTORIJ JE :" $TargetFolder -foregroundcolor "Red"
#Write-Host `a `a `a `a `a - odkomentirati ako zelimo da pc speaker vristi :)
Write-Host "UPS, krivi folder! Stisni 'Ctrl + C' za prekid - imas 5 sekundi za prekid" -foregroundcolor "Yellow"
Start-sleep -s 5
$Now = Get-Date
$LastWrite = $Now.AddDays(-$days)
$Files = get-childitem $TargetFolder -include *.log -recurse |Where {$_.LastWriteTime -le "$LastWrite"}
foreach ($File in $Files)
{write-host "Brišem file $File" -foregroundcolor "Red"; Remove-Item $File | out-null}
}
Else
{Write-Host "Direktorij $TargetFolder ne postoji! Provjeri path!"}
}
GetOldFile

 

Alesandro uto 12.2.2013 00:12

Skripta koja skida zadnju verziju timthumb.php filea,  trazi stare timthumb.php fileove na serveru ( c:\users\ folder i upgradea ako je tako specificirano kod pokretanja skripte.

 

Ako se odabere D ( detect ) u folder iz kojeg se je skripta pokrenula ce spremiti file sa nazivom "toupgrade.txt" . U fileu ce biti kompletni path do timthumb.php filea. 

Ako se odabere U ( upgrade) , svaki nadjeni file ce zamijeniti sa zadnjom skinutom verzijom timthumb.php filea. 

 

Ovu skriptu sam napisao kada je otkriven timthumb.php exploit, tako da obavijestimo/zastitimo klijente. 

 

Skripta se pokrene u powershellu. Ostalo je pretty much straight forward :D

 

 

Function FindOldTimthumb

{

param ($string = $(Read-host "Enter timthumb.php version")),

($type = $(Read-host "Just (D)etect or (U)pgrade)?"))

$storageDir = $pwd

$path = "C:\users"

$webclient = New-Object System.Net.WebClient

$url = "http://timthumb.googlecode.com/svn/trunk/timthumb.php"

$tt = "$storageDir\timthumb.php"

$webclient.DownloadFile($url,$tt)

if ($type-eq 'D'){

Write-host "Detecting files. Results will be saved in $storagedir \toupgrade.txt" -foregroundcolor "Red"

$Files = Get-ChildItem -path $path -recurse -filter "timthumb.php" |where-object {!(Select-string -Path $_.fullname -Pattern '$string' -SimpleMatch)} > $storagedir\toupgrade.txt

}

elseif($type -eq 'U') {

$Files = Get-ChildItem -path $path -recurse -filter "timthumb.php" |where-object {!(Select-string $_.Fullname -Pattern '$string' -SimpleMatch )} | ForEach-Object -Process {$_.DirectoryName} | Out-File $pwd\timthumb.txt

$infected ="$pwd\timthumb.txt"

foreach ($File in $Files)

{

Get-content $infected |ForEach-Object {

write-host "Upgrading file $_\timthumb.php" -foregroundcolor "Red"

(Get-Content $infected)| Foreach-Object {Copy-Item $tt $_ -force}

#Write-host "Upgrading file $File " -foregroundcolor "Red" {Copy-Item $tt -destination $File -force)

}

}

}

}

FindOldTimthumb

 

 

 

Alesandro uto 12.2.2013 00:17

Skripta koja trazi stare Joomle ili Wordpresse na serveru i sprema rezultate u oldwordpress.txt ili oldjoomla.txt, zavisno sto se skenira. 

 

Koristenje : pokrenuti iz Powershella i citati :)

 

Zamijenti $path = "c:\users\" sa vasim pathom. 

 

 

 

Function FindOldWPandJoomla

{

param ($type = $(Read-host "Check (W)ordpress or (J)oomla?")),

($string = $(Read-host "Enter latest version"))

$storageDir = $pwd

$path = "C:\users\"

if ($type-eq 'W'){

Write-host "Detecting old versions. When done, results will be saved in $storagedir\oldwordpress.txt" -foregroundcolor "Red"

$Files = Get-ChildItem -path $path -recurse -filter "version.php" |where-object {!(Select-string $_.Fullname -Pattern '$string' -SimpleMatch )} | ForEach-Object -Process {$_.DirectoryName} | Out-File $storagedir\folderlist.txt

$folders ="$storagedir\folderlist.txt"

Get-Content $folders | Select-String "wp-includes" > $storagedir\oldwordpress.txt

}

elseif($type -eq 'J') {

Write-host "Detecting old versions. When done, results will be saved in $storagedir\oldjoomla.txt" -foregroundcolor "Red"

$Files = Get-ChildItem -path $path -recurse -filter "version.php" |where-object {!(Select-string $_.Fullname -Pattern '$string' -SimpleMatch )} | ForEach-Object -Process {$_.DirectoryName} | Out-File $storagedir\folderlist.txt

$folders ="$storagedir\folderlist.txt"

Get-Content $folders | Select-String "components" > $storagedir\oldjoomla.txt

}

}

FindOldWPandJoomla

 

vaše ime pon 9.1.2017 05:45

Ovaj digitalni repozitorij kreiran je u sklopu sustava Digitalnih akademskih arhiva i repozitorija Dabar koji ustanovama iz sustava znanosti i visokog obrazovanja omogućava da plodove svog rada u digitalnom obliku okupljaju na jednom mjestu, dugoročno ih čuvaju i koriste, a da pritom ne moraju razmišljati o tehnološkim pitanjima vezanim uz uspostavu i održavanje repozitorija. Veliku količinu materijala koja nastaje njenim radom, bilo da je riječ o izvorno digitalnoj ili digitaliziranoj građi, ustanova može pohraniti u svoj digitalni, institucijski repozitorij te tako osigurati jednostavnu organizaciju i pretraživost građe.

VladRi sri 18.3.2020 00:48

Bilo mi dosadno pa napravio skriptu za mount share-a na linuxu (lako se prebaci u servis za automatizaciju sto sam u biti i napravio). Anyway:

 

putanja1= ip adresa\ime npr: \/\/192.168.1.11\/Ime

odrediste1= u koji se folder mounta share npr \/mnt\/share

* \\ se mora raditi sa escape characterom (\/\/= \\)

 

username: korisnik koji ima pravo na share

Passw: Lozinka za share

Admin pass: pass za sudo (ako korisnik nema prava treba ga dodati u sudoers)

 

Može se napraviti da se ne prompta za ista tipa:

mount_user=ime

mount_pass=lozinka 

ali se onda trebaju promijeniti prava na datoteku (chown samo na root) tako da drugi ne mogu citati lozink (plaintext jelte :D)

 

& fora je ako imate vise odredista (kao ja) onda napravite bulk mount :D samo sa c/p te odrediste(n)/putanja(n)

 

ako trebate mount od apple time capsule dodate: sec=ntlm,vers=1.0 u opcije :D

 

#!/bin/bash
putanja1=

odrediste1=
echo "Enter username for mounts:"
read mount_user
[[ -z "mount_user" ]] && echo "Username empty, exiting" && exit
echo "Enter password for mounts:"
read -s mount_pass
[[ -z "mount_pass" ]] && echo "Password empty, exiting" && exit
echo "Enter admin pass:"
read -s lozinka
[[ -z "lozinka" ]] && echo "Password empty, exiting" && exit
echo "neko ime share-a tek da se zna sto se mounta"
echo "$lozinka" | sudo -S mount.cifs $putanja1 $odrediste1 -o username="$mount_user",password="$mount_pass",gid=$(id -g),uid=$(id -u),forceuid,forcegid 2>/dev/null

exit