Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

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....

Comment on returning a specific value from a command
Download Code
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!!!
Re: returning a specific value from a command
by toolic (Chancellor) on Oct 28, 2011 at 15:36 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://934408]
Approved by toolic
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (12)
As of 2014-09-23 21:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (241 votes), past polls