news
jobs
Hlavní stránka > počítače > Dataprotector – kontrola vložení pásek

Dataprotector – kontrola vložení pásek

11.03.2010 (15,356 zobrazení) Komentuj Přejdi na komentáře

Pro dobře fungující zálohování je třeba minimálně 1x týdně vyměnovat média (na které se provádí zálohy) a odvážet je do jiné lokality (abychom nepřišli o data např při krádeži, požáru apod). Nyní jsem řešil problém, že náš zákazník má 5 poboček, na každé zálohovací mechaniku (LTO3) a nasinstalován HP DataProtector. Na pobočkách žádný IT človíček není, pásky vyměňují zaměstnanci bez IT vzdělání dle rozpisu v XLS. Pokud by vše dělali dle pokynů, žádný problém by nenastal nicméně jak je tu lidský faktor, problémy nastávají (uživatelka, co mění pásky, má dovolenou, jde dříve z práce a nebo zapomene apod).

Proto jsem vytvořil jednoduché scripty, který zjistí jaké pásky jsou vložené v jednotlivých mechanikách, zda mají retenci a poté případně pošle email.

Základ je PERL script na checkování retence pásek v mechanikách – kontrola_pasek.pl:


##### KONFIGURACE #######
@pooly = ("CZ","HU","PL","RO","SK"); #konfigurace poolu v DP vždy obsahuje dané písmena - pro každou lokalitu vlasní pool
@mechaniky = ("cze","hun","pol","rom","svk"); #páskové mechaniky jsou pojmenovány také dle lokalit
$pocet_lokalit = 5; #nebyl čas dohledat fci v perlu na počet prvků v poli
#########################
$zapsat=''; #inicializace promenne kam se zapisuje vystup
$pocet_lokalit--; #pole je od 0 takze jednu odecteme

#projdeme vsechny lokality
for ($i=0;$i<=$pocet_lokalit;$i++) {
	#vylistujeme to, co je v mechanice, radek jen kde je mechanika
	$exec = "\"C:\\Program Files\\OmniBack\\bin\\omnimm.exe\" -repository_update \"HP:Ultrium 3-SCSI_".$mechaniky&#91;$i&#93;."win60ent00\""; #název serveru je dle konceptu, tzn doplňují se jen posledni písmenka
	#print "$exec\n"; #debug
	$vystup=`$exec`;

	#z vystupu potřebujeme jen název pásky, která je v mechanice
	@sekanec = split("Data Protector medium \"", $vystup);
	@sekanec = split("\" found.", $sekanec&#91;1&#93;);
	$sekanec = $sekanec&#91;0&#93;;	
	$sekanec =~ s/ //g; #regularnim vyrazem smazeme mezery
	#print $sekanec; #debug

	#zjistime z poolu jake maji retence
	$exec = "\"c:\\Program Files\\OmniBack\\bin\\omnimm.exe\" -list_pool \"Acc_".$pooly&#91;$i&#93;."\" | find \"$sekanec\""; #jak jsem psal výše, pooly jsou nazvané dle konceptu
	$vystup=`$exec`;
	#print $vystup; #debug
	#print length($sekanec);	 #debug	

	#pokud je v řetezci dvojtečka, je uveden čas (oáska má retenci). Dále musíme zjistit, zda to vůbec našlo pásku - dle počtu znaků řetezce s páskou
	$je_uvedena_retence = index($vystup, ':');
	if ( ($je_uvedena_retence>0) or (length($sekanec)<1) ) {
		if (length($sekanec)<1) { $sekanec = "NENÍ VLOŽENA PÁSKA"; }
		$zapsat .= "ERROR - PASKA:\"$sekanec\", MECHANIKA:\"HP:Ultrium 3-SCSI_".$mechaniky&#91;$i&#93;."win60ent00\"\n";
	} else {
		$zapsat .= "OK - PASKA:\"$sekanec\", MECHANIKA:\"HP:Ultrium 3-SCSI_".$mechaniky&#91;$i&#93;."win60ent00\"\n";
		
	}
}

#print "\n\n\n".$zapsat; #debug

#nakonec výstup zapíšeme do souboru (pro zaslání emailem)
open (MYFILE, '>c:\scripts\PIKOpasky.txt');
print MYFILE $zapsat;
close (MYFILE);

Dále je nutné mít mechanismus, který daný soubor zašle na email. Použivám již delší dobu jednoduchý VBS script – pikosendmail.vbs


Sub SendMail ()
	Dim objEmail, iAttachmenCount, aAttachment
	Const sSMTPserver = "666.666.666.666" 
	aAttachment = Split(MailAttachment,";",-1,1)
 	Set objEmail = CreateObject("CDO.Message")
	objEmail.To = "PRIJEMCE@DOMENA.CZ" 
	objEmail.ReplyTo = "ODESILATEL@DOMENA.CZ" 
 	objEmail.Sender = "ODESILATEL@DOMENA.CZ"
	objEmail.AddAttachment "c:\scripts\PIKOpasky.txt" #p
	objEmail.Subject = "List of media"
	objEmail.Textbody = "Kontrolo vlozenych pasek"
	objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
	objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = sSMTPserver  
	objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
	objEmail.Configuration.Fields.Update
	objEmail.Send
End Sub
Call SendMail ()

No a zbývá nám udělat např. BATku, která spustí nejdříve kontrola_pasek.pl a poté pikosendmail.vbs, kterou následně nashedulujeme – piko_kontrola_pasek.bat


"C:\Program Files\OmniBack\bin\perl.exe" "C:\Program Files\OmniBack\bin\kontrola_pasek.pl"
cscript.exe C:\scripts\pikosendmail.vbs
  1. No comments yet.
  1. No trackbacks yet.

IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)

What is 12 + 11 ?
Please leave these two fields as-is: