thanks! you pointed me in the right direction. i ended up with this code:
#!/usr/bin/perl # # App Name: pscan.pl # Written By: DKD (dale_d at telusplanet dot net) # # uses nmap, fuser, and ps to display the port number, # protocol, pid, and executable name for each open # port in a readable format. # # Requires: nmap, fuser, ps # # Usage: pscan.pl # No switches use strict; # Variables my @temp; my @nmap; my @port; my @protocol; my @pid; my @pids; my @app; my $whoami; my $junk; my $i; # Check to see if you are root, and then display some text. $whoami = `whoami`; chomp($whoami); die "You must run pscan as root!\n" unless ( $whoami eq "root"); print "\nScanning for open ports."; # Grab input from nmap and discard any output lines that we # don't want (any that don't start with numeric characters). chomp(@temp = `nmap localhost`); foreach (@temp) { push(@nmap, $_) if $_ =~ /^\d+/; } # Iterate through the output from nmap and extract the port # and protocol, then use the port and protocol to get the # PID from the fuser command, then use ps to get the name of # the executable from the pid. $i = 0; foreach (@nmap) { (@port[$i], @protocol[$i]) = split /\//, $_; @protocol[$i] = split / /, @protocol[$i]; @pid[$i] = `fuser -n @protocol[$i] @port[$i]`; chomp(($junk, @pid[$i]) = split /:\s+/,@pid[$i]); chomp(@app[$i] = `/bin/ps --no-headers -o %c @pid[$i]`); $i++; print "."; } # Display the data in a readable format print "done." . "\n" x 2; # print the header print " The following ports are open on your system:\n\n"; printf "%8s%12s%12s%16s\n","Port", "Protocol", "PIDs", "Process"; print "-" x 48 . "\n"; $i = 0; foreach (@nmap) { # print the port, protocol, first pid, and app(proc) chomp(@pids = split / +/, @pid[$i]); printf "%8s%12s%12s%16s\n", @port[$i], @protocol[$i], shift(@pids) +, @app[$i]; foreach (@pids) { # print any pids if there are more than one. printf "%32s\n", $_; } print " -" x 24 ."\n"; # dashed line separating each port ++$i; }

In reply to Re: Re: @pid = a list - need a way to print by Hayl_
in thread @pid = a list - need a way to print by Hayl_

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.