Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

returning a specific value from a command

by familyofcrowes (Initiate)
on Oct 28, 2011 at 14:13 UTC ( #934408=perlquestion: print w/replies, xml ) Need Help??
familyofcrowes has asked for the wisdom of the Perl Monks concerning the following question:

I need to pull the stats from all my AIX UNIX systems. I'm a TOTAL noobie to UNIX and Perl. I am using Solarwinds Orion to do my monitoring, but it is mostly a "launch pad" for managing and launching perl.

I have a script:

#!/usr/bin/perl @sa=split("\n",`vmstat`); @line=split(" ",$sa[1]); for ($i=0; $i <= @line; $i++) { if ( $line[$i] eq "us" ) { $j=$i; @stat=split(" ",$sa[2]); print "Message: CPU user time in percentage: $stat[$j] +\n"; print "Statistic: $stat[$j]\n"; exit 0; } } print "Message: ERROR: Can't find CPU user time (us) in output of -vms +tat- command. \n"; exit 1;

but I need to pull the info that is on a specific line. How do I do this? I have about 100 more of these I have to figure out as well, this just looked the easiest so far.

Thanks everyone for any help, I'm reading the tutorials as fast as I can....

Replies are listed 'Best First'.
Re: returning a specific value from a command
by toolic (Bishop) on Oct 28, 2011 at 15:36 UTC
Re: returning a specific value from a command
by Anonymous Monk on Oct 28, 2011 at 14:38 UTC
    We are not clairvoyants. Provide sample input from vmstat, then define clearly which part you want to extract.

      vmstat reports information about processes, memory, paging, block IO, traps, disks and cpu activity.

      the output is like this

      procs ------memory------- --swap-- ---io--- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 0 9999 9999 9999 0 0 99 99 9999 999 9 9 99 9

      Let's see...

      Your target is the 13th number in the third line, so you need to discard lines 1 and 2, and then print this element

      my @stat = `vmstat`; foreach $line(@stat){ if ($line =~ /^procs/){next} if ($line =~ /us/){next} else {chomp $line; my @fo = split /[[:blank:]]+/, $line; print "Message: CPU user time: $fo[13]\n";} }
        This is a HUGE help... Thanks very much!!!

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://934408]
Approved by toolic
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (8)
As of 2017-04-24 21:19 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (447 votes). Check out past polls.