From 4b5edf25c77895d309e867b62cb5a768debd150d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1ll=20Gu=C3=B0j=C3=B3n=20Sigur=C3=B0sson?= Date: Wed, 6 Oct 2010 09:51:47 +0000 Subject: [PATCH] --- check_eva/trunk/check_eva.py | 12 ++--- nsclient/trunk/check_eva.ini | 32 +++++++++++++ .../trunk/scripts/check_eva/check_eva.exe | Bin 31744 -> 32256 bytes nsclient/trunk/scripts/check_eva/check_eva.py | 45 ++++++++++++------ nsclient/trunk/scripts/check_eva/library.zip | Bin 1721340 -> 1721340 bytes 5 files changed, 69 insertions(+), 20 deletions(-) create mode 100644 nsclient/trunk/check_eva.ini diff --git a/check_eva/trunk/check_eva.py b/check_eva/trunk/check_eva.py index a6227ec..3b280ec 100644 --- a/check_eva/trunk/check_eva.py +++ b/check_eva/trunk/check_eva.py @@ -71,7 +71,7 @@ valid_modes = ( "check_systems", "check_controllers", "check_diskgroups","check_ from sys import exit from sys import argv -from os import getenv,putenv +from os import getenv,putenv,environ import subprocess import xmlrpclib import socket @@ -178,7 +178,7 @@ def runCommand(command): stdout, stderr = proc.communicate('through stdin to stdout') if proc.returncode > 0: print "Error %s: %s\n command was: '%s'" % (proc.returncode,stderr.strip(),command) - if proc.returncode == 127: # File not found, lets print path + if proc.returncode == 127 or proc.returncode == 1: # File not found, lets print path path=getenv("PATH") print "Current Path: %s" % (path) exit(unknown) @@ -596,11 +596,11 @@ def set_path(): current_path = getenv('PATH') if path == '': if current_path.find('C:\\') > -1: # We are on this platform - path = "C:\\Program Files\\Hewlett-Packard\\Sanworks\\Element Manager for StorageWorks HSV" + path = ";C:\\Program Files\\Hewlett-Packard\\Sanworks\\Element Manager for StorageWorks HSV" else: - path = "/usr/local/bin" - current_path = "%s:%s" % (current_path,path) - putenv('PATH', current_path) + path = ":/usr/local/bin" + current_path = "%s%s" % (current_path,path) + environ['PATH'] = current_path set_path() diff --git a/nsclient/trunk/check_eva.ini b/nsclient/trunk/check_eva.ini new file mode 100644 index 0000000..6429c8e --- /dev/null +++ b/nsclient/trunk/check_eva.ini @@ -0,0 +1,32 @@ +[modules] +NSCAAgent.dll +CheckExternalScripts.dll + +[External Scripts] +eva-check_systems=cmd /c scripts\check_eva\check_eva.exe --mode check_systems --host localhost --username administrator --password Z0rglu66 --nagios_server 94.142.154.11 --nagios_myhostname commandview.okhysing.is +eva-check_disks=cmd /c scripts\check_eva\check_eva.exe --mode check_disks --host localhost --username administrator --password Z0rglu66 --nagios_myhostname commandview.okhysing.is --nagios_server 94.142.154.11 +eva-check_diskgroups=cmd /c scripts\check_eva\check_eva.exe --mode check_diskgroups --host localhost --username administrator --password Z0rglu66 --nagios_myhostname commandview.okhysing.is --nagios_server 94.142.154.11 +eva-check_diskshelfs=cmd /c scripts\check_eva\check_eva.exe --mode check_diskshelfs --host localhost --username administrator --password Z0rglu66 --nagios_myhostname commandview.okhysing.is --nagios_server 94.142.154.11 +eva-check_controllers=cmd /c scripts\check_eva\check_eva.exe --mode check_controllers --host localhost --username administrator --password Z0rglu66 --nagios_myhostname commandview.okhysing.is --nagios_server 94.142.154.11 +ls=cmd /c dir + + + +[NSCA Agent] +hostname=commandview.okhysing.is + +interval=300 +encryption_method=1 +password=prufa +nsca_host=94.142.154.11 +nsca_port=5667 +command_timeout=300 + + +[NSCA Commands] +HP EVA Systems=eva-check_systems +HP EVA Diskshelves=eva-check_diskshelfs +HP EVA Disks=eva-check_disks +HP EVA Diskgroups=eva-check_diskgroups +HP EVA Controllers=eva-check_controllers +;check_ls=ls \ No newline at end of file diff --git a/nsclient/trunk/scripts/check_eva/check_eva.exe b/nsclient/trunk/scripts/check_eva/check_eva.exe index 25840ee8b004ed753d7400636af36a77c36c4a6f..6c5d15f69c185d77f0d7de108ae5541f47832c65 100644 GIT binary patch delta 4364 zcmai1drVa66+hq1FgU}*K^WcwBIuwZ55Xs>_yR>iFCuc6ha=wwW*BA$?u8YF%=*}; zc31ng{R8W(b+_Af)6ykzH#XaBT3fff&8DwEnryOd(xz?N{?oK+n{3ncoHH`uc9W|2 zH|IOwIp_P%^Io6%mw4viVs4cXeX3LhZC4JeJGSlWeKF_0au5Jc;d5yIg6)GEoA;n< ztE;vBvt|B5-QSmqPW5zST`URwZjes!r+~}{e;OEe@TW5_XO0JCGUyo~mw~y@CdjIZ-xqzFRApcg}^1oRRJtpa^jd@mnHN$vBl_YT)341;CCbrtXj&pCD_#o zHrDGRyC%U#BO)PPn_#2#B6}0WC|^%x1QU{$(5qv;&+fYu`}Lo@pOV<${JHy{#Qv68 z;$nE;^aOwFQugu$dmFK%$(Xq95b7wr32(keT z#76ADolNbb{@cxD6EgQOwHK*!MsY6V)B6XNMrHbZ+JOZ)}F4;h@ z2HDR18s_8HQRdfzJjVP@)b3J)OIXgaI*=XAtp|CWiOnE8nb<;8NS*-M1@a`wZWzL9 z)ZtPR=vzTPMO#Ba|46Kd`P)GDvhH?}eN5~C+0O(z-@wtr;*@rdZ!`7(DF`$YU*8GR zzd-LIfArmSgx&-Onmr8$E(gG90x7{j0RxPksOS*k-+>^bnQSx#^Ra^u3jZX|&ssQ4 z4zkT5vMGo8tQa1QwgL+WV`Bc#VQ1n-y=;_vmE|cM19aVsU=!ivahYtES)GsxvdjoM zfKfvShM+d?K^c}*h}t&0x#e+DEv~V;yj)$F<_=$2y|A~zYo_6QWn10Gn!4JJHTC#g z9XJZ=(cYiycHFR>2t$TtgeRGdPB58_Tx12tBjL6{5-tYt;XkCb7a#L1f)ro@-9*{| z!A{@+OQ^r>Yx3H_veRW~n|CsBXMWHAN5bJiU6tG1?LJ19N)bTKG(QrC+TU_njLiS6 zrCwCgy(=rj{-Hp`?2ksqEpr)j%qi0{M$J@SM290`qjEShYRqRJ@(FQY?P@(NPOB@e z6{S%Rh-m?Me|i((^vJ_tC)1k(Z#9F3?N*OkOGS$MQ|oD4K&XRROfrhH|Ny) z&R19E3#Uj1r^rAT-C}^!L3NOh5BvA2`fcZPF(+8A_-MjkD~T`O24ZSASok4=&Y~mu zYQl@)hY8);N&_n$Ec_ZthH32dWiX9VMqLzlgXMvXHizgM`y&V;5Kpq74lEiggXAd? zXtu*g9<-V22PZb>a4uw|pYz;Lc`j)zDL2($PvmCf+XvWN(-@x&3>X}o6{@(aI~Kq# zZ8O165~5Oi!U!G+@VK-_r-maYM^>XiXl&Mv)Z&?J;ITLzW{mT>OKQ_1)zOGFv}z>O z$6W_fFCu|a0|*7eO8AS`+mSZHa-G0Dlpzf%St41`lP}W5a*-+0@z*ZWz^$Su3kI7} z1ltRnY&t2P2W+!x0Icaj8)RcqSyT4+wEyrS(+orUY|c@Hzrl(qJg!x8fIhmNxh{0W~^QoX;WV0CAkXw5=1|Q?CuRv~$QQ z+Bg95YVi@eB=U5*al@PlS=u*9YmR`D%8`#B9xy^u`wsEmQjNo>#7pYt@ReLIh7zlE zhD$SmwJNBQBcG~0fkUf{c>?1ISQvVCD%kjkxZsgtSJwh1Jy^0hm~lqntWM#nk;)S! zjY|2VaLnMBD$Y|97U@xG!MuzNymp&* zoi2Zu;HKIV-0f{A@(qG}1m7ZfQ#~K7iBY|AvBn!cV)aKcJVw~kxE2;uwV0*bq|HUb zxuK-_=#8Nj5zwh@D}XPre$(<>6K4ECKKf1CCh73RXn(*`wIem9_i_0PjBb2b;K=si z7@IqEcx2P!-Fkd|C{5%sQ_<7a0V8$6e` zUm;j*@CUeL-v=ULYdjJP8RI55y!Kt%p_#C_6ED3VlZANat9r}ATfbpdia)DgS>G3a zb$#N58*_`_7dRXn)PE*QliE>Xhbo(FuU(GR_NobUyebqK@Q12S2g0TUdF5ug$#YPv zCF4B=BLsEo)yXEIsXt79n8L|;hq!Ogzx#BB2<{=8yYM-po=4zrIN%SNhSoqlgJ6(g zh~Q-cw!Sz@>3r=af)@#1Aczvw6L9G7sHUlG4@Z|nN^PuNRYOx1DRo445PVsEWonO; zXGBnaGL?5~l(@YF=Lt9umx)?Sz^S7`jMwEiiQ=5TM-+2Z91Dy+jRPeX~%TZkC|lB{?RtmcBcP#rcImt(a!Xov$9~vnX2#S z@11+@x%Zy)JNNB{e~SxWh<8>BF{Elm*m1Q(-E*|5Ux;^nS33Y;7@yAMCC7*B9Tgp_ zdqa!kKL?VRHhh*TvelXG8xk%E`arrNm<19bm<@&#f;k{Ppyz_j06h<6Cg}Mfy`UF> z^nqRoG7Iz~m;lh1fy61xz$k)tnZqm(SuV4DWO>XAkmWNgL{cH|H9T5`FH2?y-LT-ilExDY-nCEi);($Ox}~94 zJ<&NM?Oeaqc{Mxx@bp;6#`X99A)Enb zA&%97TtnF@p@g4$;7ljy>7}unIF=6*!a&uz(hIJAWM{J@ZEjARQJstCb!jsO5oz!B zX)}5+np@cXctH{*`GtzKKEZ+7V_|&56UVdC;~UfK;&yV<=1pXt&cFg}2D2DbR10%} z|CND}mtbA;0+_fhi-|);4N!wU1#&AGh;7(7+nBW@+s;SS3W}V0mvf|f(ECZQ11oAMu?bu)P^%H`~`y%gP>@NByq{`6V{C zfc!F(R*)K#4RnLZUXXnt`#~OsaqOZ2n0JG|5#%u%8VCAEZi5LP*aTAN$(unQXR-z4 z5EDH7R!$eHOgcHi9hk`z5Nac{z76Eb1>O$w5a`=!34I3`7&QO}z7B)217r{kbQl3+ z8%}hI=wCtDnF)}E95f3HvV|9l{)z@b7Nr*(<)D&+N@K}lV+$PX@_!aPn~J%NV^Ytt zzdSZUyTkp?fkQ<5QclI}RF`%dXCL$oQrhqYhKk>soUKM;8ome(1HnUh9TnH_`KJrsEr0tmPI zxZ?vM)y>Y!BAi@(aHGi2Mtf6JG&mkIt!Xo6Ctp0|7vjE39_|v_wXViO6F(Go2Ho1Y zsKTZA?*K76$PKht{to_%tYVVOf+Cw*33_kTi;TBM_(%%bs?uT=HkP# zey7R@p6dq)d%@fc;#?!xJ}Qun-!l)yQSliN$DN`jo4%-a4$L`RV&K%zKnQ_&EQ+@# zdUSN!x#Ulms07@aPn92QUCSA??4Uhk;mHA}49g0R8ydRM8n`nfb~-d_M1xa?KTlmd zHrS7s2xyyVJO?3_&H%X?F^%?*8w8l1Fr!9b!kjWV$|Enzx?Qk1YwFyDY1tH84Gs2* z3+nrW>k`!hSFJ)P@GTP=f}V1bBl1KMqEj^DlPTO{l=4J*Bq4CFwjx0_#R1|1#vD*G z>miAS(B$EYVyZGAk^8C;NA)Zn1 zpJ?1gc|>&sM9k>8b`^>C5`v%7r(GtvLhx0BGX!{+)C5YHc3rJGIVg6iXHUMD{|XJ? zB;YBw>Iqc4zlrb1l@*ZUis~8mUmGqEBdTz?UA%;^jqbZRJg#Pk<5@hLmey!um8uPv zuL{#SXeS^%A_F|4QfOZ%msCu@eBq*ZEYY;GU7cow&NHc59*xMs2AQNx)e z<2eV+;%}HZ3}8Fsk7nE>TFbBtQ21lc)GsIc0^tpSEt04HJXuzdj~nUMZqRn_5!_O~ z$gccv6QyHoZxXzr0+IC*I)b0Bw^T2ic3>LMYD8^~>&^vPtOb|mF3si&P-%FwRz)^i zi^GI4gMrk|lUj>ceM5<!JA0ID19#^?2NsdhY%jHQaN}Y_=h__WD zwi=aqKj!y*11D%V)hDr0RL>U65;xRaR)1Cj>&vH`#P8LQPrr|!viO;!IX2$-e8pkSh5F-}T30vDQO>hHExAaV zXRKIr#2gJqnnyxWi#mdDF+bfiS_{DtL71Rb&7a*ZcB_YHf0@O}{{dOwP2N7&D30$W z&b>89Y#xDCd>|OH46U7PlE5GsBY2U3qc7f*FOcn7f{g^6?K`UZd`Uhhl(Wb;&lS~w zzR}Z5PG3_moZsVNQH9h;=gW);Sx*q~DflMf)YFBlH4t#MNNK5R-6zJ1{3$V#llC;h z9|*Xr?-Jt!r#f97if?p$0qSDBOx=msWtWI-{+r|U7OP*!yH(w6b+PnT 0: nagios_myhostname = arguments.pop(0) elif arg == '--nagios_server': nagios_server = arguments.pop(0) - elif arg == '--nagiosport': + elif arg == '--nagios_port': nagios_port = arguments.pop(0) + elif arg == '--system': + check_system = arguments.pop(0) + elif arg == '--phone-home': + do_phone_home = True elif arg == '--escape-newlines': escape_newlines = True elif arg == '-h' or '--help': @@ -173,7 +178,7 @@ def runCommand(command): stdout, stderr = proc.communicate('through stdin to stdout') if proc.returncode > 0: print "Error %s: %s\n command was: '%s'" % (proc.returncode,stderr.strip(),command) - if proc.returncode == 127: # File not found, lets print path + if proc.returncode == 127 or proc.returncode == 1: # File not found, lets print path path=getenv("PATH") print "Current Path: %s" % (path) exit(unknown) @@ -280,14 +285,21 @@ def run_sssu(system=None, command="ls system full"): if not object.has_key(key): value = ' '.join( tmp[2:] ).strip() object[key] = value - #for i in objects: - # print i['objectname'] + # Check if we were instructed to check only one eva system + global check_system + if command == "ls system full" and check_system != None: + tmp_objects = [] + for i in objects: + if i['objectname'] == check_system: + tmp_objects.append( i ) + objects = tmp_objects return objects def end(summary,perfdata,longserviceoutput,nagios_state): global show_longserviceoutput global show_perfdata global nagios_server + global do_phone_home global nagios_port global nagios_myhostname global hostname @@ -302,8 +314,10 @@ def end(summary,perfdata,longserviceoutput,nagios_state): if escape_newlines == True: lines = message.split('\n') message = '\\n'.join(lines) - if nagios_server is not None: + debug( "do_phone_home = %s" %(do_phone_home) ) + if do_phone_home == True: try: + if nagios_myhostname == None: nagios_myhostname = hostname phone_home(nagios_server,nagios_port, status=nagios_state, message=message, hostname=nagios_myhostname, servicename=mode) except: pass @@ -312,6 +326,7 @@ def end(summary,perfdata,longserviceoutput,nagios_state): ''' phone_home: Sends results to remote nagios server via python xml-rpc ''' def phone_home(nagios_server,nagios_port, status, message, hostname=None, servicename=None): + debug("phoning home: %s" % (servicename) ) uri = "http://%s:%s" % (nagios_server,nagios_port) s = xmlrpclib.ServerProxy( uri ) s.nagiosupdate(hostname, servicename, status, message) @@ -461,6 +476,8 @@ def check_multiple_objects(object, name): if name == 'fans' or name == 'sensors': valid_states = ['good','notavailable','unsupported','notinstalled'] + elif name == 'fibrechannelports': + valid_states.append( 'notinstalled' ) num_items = len(object[name]) for item in object[name]: stat = check_operationalstate( item,print_failed_objects=True, namefield=namefield, valid_states=valid_states,detailfield=detailfield) @@ -579,11 +596,11 @@ def set_path(): current_path = getenv('PATH') if path == '': if current_path.find('C:\\') > -1: # We are on this platform - path = "C:\\Program Files\\Hewlett-Packard\\Sanworks\\Element Manager for StorageWorks HSV" + path = ";C:\\Program Files\\Hewlett-Packard\\Sanworks\\Element Manager for StorageWorks HSV" else: - path = "/usr/local/bin" - current_path = "%s:%s" % (current_path,path) - putenv('PATH', current_path) + path = ":/usr/local/bin" + current_path = "%s%s" % (current_path,path) + environ['PATH'] = current_path set_path() diff --git a/nsclient/trunk/scripts/check_eva/library.zip b/nsclient/trunk/scripts/check_eva/library.zip index 72d69f6e7beb056d97c119a0e89815f0cad9933a..a54eaad3e93957fefa1fc7903e1f6a9e88cc0772 100644 GIT binary patch delta 385 zcmeyQvY+~m7# z(h!LUn{TtbLnO{zG%}j3#VG~Tq0HsMC;+l!%lw4-20*8P@MK3`VRon^fc7;P^0XK7 zFaj|X5HkZY3lOscF&hxG12G2>a{@6J5OV`DNIfqQ^8qnG5DNgYAP@@yu`m#e0I?_# zivh7X5K92D8}Z{RO1-;C`OoDj=l`=7BsqeHTn6$am8} S3rHD&fdPcMfnxE+`N`R-C3*#w$(uj%a;5EP z-)NxD!~s&eqwSW@qZOHu)}_ zG(_UT=G*M<5Q$%pyWULJ;*^5vQ0DSr6ad+wIbEXI0O%ADp6tjg%no$~(7xtEp7uf> zMj&PaVrC#_0b*7lW&>h&Am#vKP9Ww2Vs0P?spkb^J|N}?VgVo)1Y#i|76xJwAQlB; zF(4KPVhJFY++N5dHJ2IeFHqP_7ZZ>&gnNIwzkrk;+|Scn1*CMrJdj7H?}DiW`EL4W S0VxBp9LP)CwFRXv8UX+zKZ2wH