#!/usr/bin/perl use strict; my $cp=$ARGV[0]; my $vserver=$ARGV[1]; my $fuzzymatch=$ARGV[2]; my @checkprocesses=split(",",$cp); my @processlist=(); my $hit=0; my $crit=''; my $i=''; my $ii=''; my $d=''; #dummy my $procname=''; my $vs=''; foreach $i (@checkprocesses){ # If ARG3 is set to fuzzymatch use a wildcard match for the process name if ($fuzzymatch eq 'fuzzymatch') { @processlist=`sudo vps aux | awk '{print \$4,\$13}' | egrep "^$vserver .*?$i.*\$"`; }else{ @processlist=`sudo vps aux | awk '{print \$4,\$13}' | grep "$vserver $i"`; } foreach $ii (@processlist){ ($vs,$procname)=split(" ",$ii); $procname=~s/\s*$//g; $procname=~s/^\s*//g; # remove [], so that we can check [nfsd] as nfsd for example $procname=~s/^\[//; $procname=~s/\]$//; if ($vs eq $vserver && $procname=~/^.*?$i.*$/){ $hit=1; } } if ($hit==0){ $crit=$crit . "$i "; } $hit=0; } if($crit ne ''){ print "Processes not running: $crit"; exit(2); } print "Processes ok"; exit(0);