in reply to Re^8: how to print out windows service status
in thread how to print out windows service status

Post the content of XiServiceList.txt

Replies are listed 'Best First'.
Re^10: how to print out windows service status
by ytjPerl (Scribe) on Aug 01, 2017 at 13:01 UTC
    this file is just a list of services name with first entry hostname.
    localhost AMD External Events Utility aspnet_state SensrSvc CryptSvc

      Maybe it's whitespace in the file, try this

      #!perl use strict; use autodie; use Win32::Service qw'GetServices GetStatus'; my @state_name = qw( UNKNOWN Stopped START_PENDING STOP_PENDING Started CONTINUE_PENDING PAUSE_PENDING PAUSED ERROR ); my $filename = '/Perl/XiServiceList.txt'; open FILE, '<', $filename;# autodie my $hostname = <FILE>; chomp $hostname; print "Checking Services available for '$hostname'\n"; my %available=(); GetServices($hostname,\%available) or die "$!"; # add short names $available{$_} = $_ for values %available; print "Checking services in list\n"; while (<FILE>){ # trim leading and trailing whitespace s/^\s+|\s+$//g; if (exists $available{$_}){ my $shortname = $available{$_}; my %status; GetStatus($hostname, $shortname, \%status); my $state_no = $status{'CurrentState'}; printf " ServiceStatus: %s %s %s \n", $hostname, $shortname, $state_name[$state_no]; } else { print "-- ERROR -- '$_' status not avaiable\n"; } } close FILE;
      poj
        awesome! Thank you. This is working.
        I am adding  while(){sleep(30);} in order to have status checked every 30 seconds. but it is just stopping there after the first time check.
        #!perl use strict; use autodie; use Win32::Service qw'GetServices GetStatus'; my @state_name = qw( UNKNOWN Stopped START_PENDING STOP_PENDING Started CONTINUE_PENDING PAUSE_PENDING PAUSED ERROR ); my $filename = '/Users/tyang/Documents/Traning/Perl/XiServiceList.txt' +; open FILE, '<', $filename;# autodie my $hostname = <FILE>; chomp $hostname; print "Checking Services available for '$hostname'\n"; my %available=(); GetServices($hostname,\%available) or die "$!"; # add short names $available{$_} = $_ for values %available; print "Checking services in list\n"; while() { sleep(30); while (<FILE>){ # trim leading and trailing whitespace s/^\s+|\s+$//g; if (exists $available{$_}){ my $shortname = $available{$_}; my %status; GetStatus($hostname, $shortname, \%status); my $state_no = $status{'CurrentState'}; printf " ServiceStatus: %s %s %s \n", $hostname, $shortname, $state_name[$state_no]; } else { print "-- ERROR -- '$_' status not avaiable\n"; } } }