saeen has asked for the wisdom of the Perl Monks concerning the following question:

HI i have read alot of posts on how to get a PID of a child script etc. My problem is that i have to test incoming connections on a machine. So i decided to write a script that listens on a particular port and then the calling script tries to SSH into a remote machine and runs a nmap query to find out if the port is reachable. Since the calling script has SSH and run the nmap query i can't use  exec. I just want to know if i can call a script and find out its PID so that once all tests are done i can kill the running scripts ? Hope it makes sense.

Update

thanks zentara...this is exactly what i wanted :) your monks are awsome. So now i have a thread.pl that simply binds to local port and waits to accept connection. My calling script creates a thread.pl for every port that i need to test. I then SSH into a remote host and run nmap against current host. once i get the output i kill all running threads.
#!/bin/perl -w use strict; use warnings; use Proc::Background; use Net::OpenSSH; my @ports = ("443","8080"); my @threads = ''; my $index = 0; foreach my $port(@ports){ $threads[$index] = Proc::Background->new("/usr/bin/perl thread +.pl $port"); $index++; } my $ssh = Net::OpenSSH->new("remote.host.net", user=>"me",passwd=> +"******"); $ssh->error and die "Can't ssh to host\n"; my @output = $ssh->capture("nmap -p T:8080,443 my.host.name"); print @output; foreach my $thread (@threads){ print "Killing $thread\n"; $thread->die; } print "Done ";

Replies are listed 'Best First'.
Re: A little help with PID
by zentara (Cardinal) on May 28, 2012 at 10:21 UTC