Perl- check the port used


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl- check the port used
# 1  
Old 05-19-2011
Error Perl- check the port used

hi everybody;
my code is cheking if a port is an actif or not with the cmd netstat -ln,I want first to enter the number of the port which I want to check it but I think that the value of $con in the second "if" is always "0" so the code give me always that the port is not used!!!

Code:
#!/usr/bin/perl
print "enter the port :\n";
$port=<STDIN>;
$con=0;
open (FILE,"-|") exec "netstat -ln |grep" .$port;
open (FIL,">res.txt");
whiel (<FILE>){
if ($_ =~/:$port/){$con++;}}
if ($con){
print FIL "The active port is : $port\n"}
else{
print FIL "the port is not active\n";}
close FIL;
close FILE;

# 2  
Old 05-19-2011
  1. use strict; and use warnings; will catch & tell you about a lot of potential errors if you let them
  2. Without chomp $port will still have a newline at the end of the string, which will be included in any match attempt.
  3. Why do you grep and then do additional filtering in Perl, when you can do it all in Perl?
This User Gave Thanks to pludi For This Post:
# 3  
Old 05-19-2011
can you please clarify the second and the third point I'm just a beginner
# 4  
Old 05-19-2011
Reading from a filehandle, such as STDIN, will always read all characters up to and including the new line character(s), and save them to the variable given on the left side. That means when your user inputs (for example) "22" and then hit return, $port will actually contain "22\n" (on Unix) or "22\r\n" on Windows or "22\r" on MacOS. chomp will remove any non-printable characters at the end of the line for you. Try this small script:
Code:
#!/usr/bin/perl

use strict;
use warnings;

print "Enter something: ";
my $input1 = <STDIN>;
print "You wrote >>$input1<<\n";

print "Enter something again: ";
my $input2 = <STDIN>;
chomp $input2;
print "You wrote >>$input2<<\n";

See the difference?

Now when you try to match the contents of $port on line 7, Perl is trying to match (with the example 22 again) ":22<newline>" exactly. Since the port number isn't at the end of netstats output, it will never match.

As for point 3, take a look at the (aptly named) grep function.
This User Gave Thanks to pludi For This Post:
# 5  
Old 05-19-2011
thank you a lot Pludi for your quick help
# 6  
Old 05-19-2011
I'd tend to use grep on an array rather than a string, for a string I'd go for something like the following with a straight regex. (Note: regex used works for my flavour of netstat and may need amending to work for you, (netstat 1.42 (2001-04-15) from net-tools 1.6)
Code:
#!/usr/bin/perl

#ALWAYS use these 2 lines if it's worth saving the file
use strict ;
use warnings;

my $port=$ARGV[0]; #TODO validate and print usage if wrong
my $netstat=`netstat -ln`; #get output of netstat command

#Check for service listening on the port
my ($service)=$netstat=~/\w+\s+\d+\s+\d+\s+[\d.:]+:$port\s+[\d:.]+:\*\s+LISTEN/;

if ($service){
    print "There is a service listening on $port\n"
}else{
   print"No service on $port\n";
}


Last edited by Skrynesaver; 05-19-2011 at 07:22 AM.. Reason: Left in final quote from cmndline development
This User Gave Thanks to Skrynesaver For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to check the IP:PORT firewall uses?

I have my firewall process running # ps -ef | grep firewall root 21169 1 0 08:50 ? 00:00:00 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid I wish to know what ip : port number it is using. Can you please tell me how can i find out ? I tried the below command... (4 Replies)
Discussion started by: mohtashims
4 Replies

2. Shell Programming and Scripting

How to check empty port using netstat?

Hi, How to check empty port using netstat please help Thanks Ashfaque (3 Replies)
Discussion started by: ashfaque
3 Replies

3. Red Hat

How to check port used for SSL?

I have RHEL 5.8 in our production environment. We are using SSL, my query is how to find the port used for SSL. In /etc/services, it shows 443 but when I give netstat -tulpn | grep 443 Or netstat -tulp | grep https I do not get any output. I hope, my question is clear of how to find... (4 Replies)
Discussion started by: RHCE
4 Replies

4. Shell Programming and Scripting

How to check UDP port example = 31011?

We have open port UDP port 31011, how to verify if port were working or traffic were receive. (2 Replies)
Discussion started by: avtalan
2 Replies

5. Shell Programming and Scripting

Perl code to check date and check files in particular dir

Hi Experts, I am checking how to get day in Perl. If it is “Monday” I need to process…below is the pseudo code. Can you please prove the code for below condition. if (today=="Monday" ) { while (current_time LESS THAN 9:01 AM) ... (1 Reply)
Discussion started by: ajaypatil_am
1 Replies

6. Shell Programming and Scripting

How to check if a Port is accepting connections.

Hi, I need to create a script which checks the availability of a particular service on a particular Port on HP-Unix. Is there any command in unix wherein we can check if any port is accepting the connections now. Thanks, Vihang. (5 Replies)
Discussion started by: vikings.svnit
5 Replies

7. UNIX for Dummies Questions & Answers

How do you check whether a port currently being used?

Hi, Please help me out, how to check whether a port currently being used or not. is there any command which give the result? Thanks Rajesh (6 Replies)
Discussion started by: rajesh08
6 Replies

8. Solaris

How to check that a device is attached on a port

Q1: can anyone tell me how cfgadm keeps track of the device even if the device is disconnected , when we disconnect a device using cfgadm cfgadm -ys disconnect <ap_id> then the device disappears from the lshal o/p. HAL uses libdevinfo for the device list. if the device is not there in the... (2 Replies)
Discussion started by: narendra.pant
2 Replies

9. IP Networking

How can I check what port addresses used the application

Hello Mentors! I am a new here in the furom, i hope somebody can understand my problem. Basically we have an application here called unigraphics and being installed per station and the setup is look like this. 1. installed unigraphics UGNX3 version on every station 2. some are installed in... (1 Reply)
Discussion started by: eykyn17
1 Replies

10. IP Networking

how can i check if port is busy or if someone is using it ?

Hello i have application that using ports , how can i check if the port im using is not captured by any applications? (1 Reply)
Discussion started by: umen
1 Replies
Login or Register to Ask a Question