Quali processo stanno utilizzando la porta del listener? Linux permette di rispondere a questa domanda utilizzando il comando fuser con l'opzione "-n". Il programma che segue è scritto in perl ed è necessario avere i privilegi di accesso a tutte le sottodirectory di /proc. Per utilizzarlo basta lanciare “puser” seguito dal numero della porta da controllare. Ad esempio:
#andrea> puser 1531
1531: 2506 18359
1531: 2506 18359
#!/usr/bin/perl
die "Usage: puser \n" if @ARGV[0] == 0;
$ENV{'PORT'} = @ARGV[0];
$shell_in = <<'IN'; echo "" > /tmp/checkPortTestPerl;
for PROC in /proc/*; do
echo $PROC >> /tmp/checkPortTestPerl 2> /dev/null
pfiles -F $PROC | grep port |grep $PORT >> /tmp/checkPortTestPerl 2> /dev/null
done 2> /dev/null
IN
$shell_out = `$shell_in`;
open(FH, "< /tmp/checkPortTestPerl") or die "can't open /tmp/checkPortTestPerl: $!";
$i=0;
$lineprep=;
for ($count=0; $row=; $count++) {
if ($row =~ m/@ARGV[0]/){
$lineprep =~ m#^/[a-z]+/([0-9]+)$#;
$process[$i]=$1;
$i++;
}
$lineprep=$row;
}
print "@ARGV[0]: @process\n";
unlink "/tmp/checkPortTestPerl";
die "Usage: puser \n" if @ARGV[0] == 0;
$ENV{'PORT'} = @ARGV[0];
$shell_in = <<'IN'; echo "" > /tmp/checkPortTestPerl;
for PROC in /proc/*; do
echo $PROC >> /tmp/checkPortTestPerl 2> /dev/null
pfiles -F $PROC | grep port |grep $PORT >> /tmp/checkPortTestPerl 2> /dev/null
done 2> /dev/null
IN
$shell_out = `$shell_in`;
open(FH, "< /tmp/checkPortTestPerl") or die "can't open /tmp/checkPortTestPerl: $!";
$i=0;
$lineprep=;
for ($count=0; $row=; $count++) {
if ($row =~ m/@ARGV[0]/){
$lineprep =~ m#^/[a-z]+/([0-9]+)$#;
$process[$i]=$1;
$i++;
}
$lineprep=$row;
}
print "@ARGV[0]: @process\n";
unlink "/tmp/checkPortTestPerl";
Nessun commento:
Posta un commento