|
|
@@ -1,4 +1,4 @@
|
|
|
-#! /usr/bin/perl -wT
|
|
|
+#! /usr/local/bin/perl -w
|
|
|
#
|
|
|
# check_rpc plugin for nagios
|
|
|
#
|
|
|
@@ -14,22 +14,26 @@
|
|
|
# service[check_nfs]=NFS;24x7;3;5;5;unix-admin;60;24x7;1;1;1;;check_rpc
|
|
|
#
|
|
|
# initial version: 3 May 2000 by Truongchinh Nguyen and Karl DeBisschop
|
|
|
+# Modified May 2002 Subhendu Ghosh - support for ePN and patches
|
|
|
# current status: $Revision$
|
|
|
#
|
|
|
# Copyright Notice: GPL
|
|
|
+# $Id$
|
|
|
#
|
|
|
|
|
|
-
|
|
|
use strict;
|
|
|
-use FindBin;
|
|
|
-use lib "$FindBin::Bin";
|
|
|
+use lib utils.pm;
|
|
|
use utils qw($TIMEOUT %ERRORS &print_revision &support);
|
|
|
use vars qw($PROGNAME);
|
|
|
-my ($verbose,@proto,%prognum,$host,$response,$prognum,$port,$cmd);
|
|
|
+my ($verbose,@proto,%prognum,$host,$response,$prognum,$port,$cmd,$progver,$state);
|
|
|
my ($array_ref,$test,$element,@progkeys,$proto,$a,$b);
|
|
|
-my ($opt_V,$opt_h,$opt_C,$opt_p,$opt_H);
|
|
|
-$opt_V = $opt_h = $opt_C = $opt_p = $opt_H = '';
|
|
|
+my ($opt_V,$opt_h,$opt_C,$opt_p,$opt_H,$opt_c,$opt_u,$opt_t);
|
|
|
+my ($line, @progvers, $response2,$response3);
|
|
|
+$opt_V = $opt_h = $opt_C = $opt_p = $opt_H = $opt_c = $opt_u = $opt_t ='';
|
|
|
+$state = 'OK';
|
|
|
+$progver = $response=$response2= $response3 ='';
|
|
|
|
|
|
+$PROGNAME = "check_rpc";
|
|
|
sub print_help ();
|
|
|
sub print_usage ();
|
|
|
sub in ($$);
|
|
|
@@ -46,48 +50,196 @@ $proto[10007]='u';
|
|
|
|
|
|
use Getopt::Long;
|
|
|
Getopt::Long::Configure('bundling');
|
|
|
-GetOptions
|
|
|
- ("V" => \$opt_V, "version" => \$opt_V,
|
|
|
+GetOptions(
|
|
|
+ "V" => \$opt_V, "version" => \$opt_V,
|
|
|
"h" => \$opt_h, "help" => \$opt_h,
|
|
|
"C=s" => \$opt_C, "command=s" => \$opt_C,
|
|
|
"p=i" => \$opt_p, "port=i" => \$opt_p,
|
|
|
- "H=s" => \$opt_H, "hostname=s" => \$opt_H);
|
|
|
+ "H=s" => \$opt_H, "hostname=s" => \$opt_H,
|
|
|
+ "c=s" => \$opt_c, "progver=s" => \$opt_c,
|
|
|
+ "v+" => \$verbose, "verbose+" => \$verbose,
|
|
|
+ "u" => \$opt_u, "udp" => \$opt_u,
|
|
|
+ "t" => \$opt_t, "tcp" => \$opt_t
|
|
|
+ );
|
|
|
|
|
|
# -h means display verbose help screen
|
|
|
-if ($opt_h) { print_help(); exit 0; }
|
|
|
+if ($opt_h) { print_help(); exit $ERRORS{'OK'}; }
|
|
|
|
|
|
# -V means display version number
|
|
|
-if ($opt_V) { print_revision($PROGNAME,'$Revision$ '); exit 0; }
|
|
|
+if ($opt_V) {
|
|
|
+ print_revision($PROGNAME,'$Revision$ ');
|
|
|
+ exit $ERRORS{'Ok'};
|
|
|
+}
|
|
|
+
|
|
|
+# Hash containing all RPC program names and numbers
|
|
|
+# Add to the hash if support for new RPC program is required
|
|
|
+
|
|
|
+%prognum = (
|
|
|
+ "portmapper" => 100000 ,
|
|
|
+ "portmap" => 100000 ,
|
|
|
+ "sunrpc" => 100000 ,
|
|
|
+ "rpcbind" => 100000 ,
|
|
|
+ "rstatd" => 100001 ,
|
|
|
+ "rstat" => 100001 ,
|
|
|
+ "rup" => 100001 ,
|
|
|
+ "perfmeter" => 100001 ,
|
|
|
+ "rstat_svc" => 100001 ,
|
|
|
+ "rusersd" => 100002 ,
|
|
|
+ "rusers" => 100002 ,
|
|
|
+ "nfs" => 100003 ,
|
|
|
+ "nfsprog" => 100003 ,
|
|
|
+ "ypserv" => 100004 ,
|
|
|
+ "ypprog" => 100004 ,
|
|
|
+ "mountd" => 100005 ,
|
|
|
+ "mount" => 100005 ,
|
|
|
+ "showmount" => 100005 ,
|
|
|
+ "ypbind" => 100007 ,
|
|
|
+ "walld" => 100008 ,
|
|
|
+ "rwall" => 100008 ,
|
|
|
+ "shutdown" => 100008 ,
|
|
|
+ "yppasswdd" => 100009 ,
|
|
|
+ "yppasswd" => 100009 ,
|
|
|
+ "etherstatd" => 100010 ,
|
|
|
+ "etherstat" => 100010 ,
|
|
|
+ "rquotad" => 100011 ,
|
|
|
+ "rquotaprog" => 100011 ,
|
|
|
+ "quota" => 100011 ,
|
|
|
+ "rquota" => 100011 ,
|
|
|
+ "sprayd" => 100012 ,
|
|
|
+ "spray" => 100012 ,
|
|
|
+ "3270_mapper" => 100013 ,
|
|
|
+ "rje_mapper" => 100014 ,
|
|
|
+ "selection_svc" => 100015 ,
|
|
|
+ "selnsvc" => 100015 ,
|
|
|
+ "database_svc" => 100016 ,
|
|
|
+ "rexd" => 100017 ,
|
|
|
+ "rex" => 100017 ,
|
|
|
+ "alis" => 100018 ,
|
|
|
+ "sched" => 100019 ,
|
|
|
+ "llockmgr" => 100020 ,
|
|
|
+ "nlockmgr" => 100021 ,
|
|
|
+ "x25_inr" => 100022 ,
|
|
|
+ "statmon" => 100023 ,
|
|
|
+ "status" => 100024 ,
|
|
|
+ "bootparam" => 100026 ,
|
|
|
+ "ypupdated" => 100028 ,
|
|
|
+ "ypupdate" => 100028 ,
|
|
|
+ "keyserv" => 100029 ,
|
|
|
+ "keyserver" => 100029 ,
|
|
|
+ "sunlink_mapper" => 100033 ,
|
|
|
+ "tfsd" => 100037 ,
|
|
|
+ "nsed" => 100038 ,
|
|
|
+ "nsemntd" => 100039 ,
|
|
|
+ "showfhd" => 100043 ,
|
|
|
+ "showfh" => 100043 ,
|
|
|
+ "ioadmd" => 100055 ,
|
|
|
+ "rpc.ioadmd" => 100055 ,
|
|
|
+ "NETlicense" => 100062 ,
|
|
|
+ "sunisamd" => 100065 ,
|
|
|
+ "debug_svc" => 100066 ,
|
|
|
+ "dbsrv" => 100066 ,
|
|
|
+ "ypxfrd" => 100069 ,
|
|
|
+ "rpc.ypxfrd" => 100069 ,
|
|
|
+ "bugtraqd" => 100071 ,
|
|
|
+ "kerbd" => 100078 ,
|
|
|
+ "event" => 100101 ,
|
|
|
+ "na.event" => 100101 ,
|
|
|
+ "logger" => 100102 ,
|
|
|
+ "na.logger" => 100102 ,
|
|
|
+ "sync" => 100104 ,
|
|
|
+ "na.sync" => 100104 ,
|
|
|
+ "hostperf" => 100107 ,
|
|
|
+ "na.hostperf" => 100107 ,
|
|
|
+ "activity" => 100109 ,
|
|
|
+ "na.activity" => 100109 ,
|
|
|
+ "hostmem" => 100112 ,
|
|
|
+ "na.hostmem" => 100112 ,
|
|
|
+ "sample" => 100113 ,
|
|
|
+ "na.sample" => 100113 ,
|
|
|
+ "x25" => 100114 ,
|
|
|
+ "na.x25" => 100114 ,
|
|
|
+ "ping" => 100115 ,
|
|
|
+ "na.ping" => 100115 ,
|
|
|
+ "rpcnfs" => 100116 ,
|
|
|
+ "na.rpcnfs" => 100116 ,
|
|
|
+ "hostif" => 100117 ,
|
|
|
+ "na.hostif" => 100117 ,
|
|
|
+ "etherif" => 100118 ,
|
|
|
+ "na.etherif" => 100118 ,
|
|
|
+ "iproutes" => 100120 ,
|
|
|
+ "na.iproutes" => 100120 ,
|
|
|
+ "layers" => 100121 ,
|
|
|
+ "na.layers" => 100121 ,
|
|
|
+ "snmp" => 100122 ,
|
|
|
+ "na.snmp" => 100122 ,
|
|
|
+ "snmp-cmc" => 100122 ,
|
|
|
+ "snmp-synoptics" => 100122 ,
|
|
|
+ "snmp-unisys" => 100122 ,
|
|
|
+ "snmp-utk" => 100122 ,
|
|
|
+ "traffic" => 100123 ,
|
|
|
+ "na.traffic" => 100123 ,
|
|
|
+ "nfs_acl" => 100227 ,
|
|
|
+ "sadmind" => 100232 ,
|
|
|
+ "nisd" => 100300 ,
|
|
|
+ "rpc.nisd" => 100300 ,
|
|
|
+ "nispasswd" => 100303 ,
|
|
|
+ "rpc.nispasswdd" => 100303 ,
|
|
|
+ "ufsd" => 100233 ,
|
|
|
+ "ufsd" => 100233 ,
|
|
|
+ "pcnfsd" => 150001 ,
|
|
|
+ "pcnfs" => 150001 ,
|
|
|
+ "amd" => 300019 ,
|
|
|
+ "amq" => 300019 ,
|
|
|
+ "bwnfsd" => 545580417 ,
|
|
|
+ "fypxfrd" => 600100069 ,
|
|
|
+ "freebsd-ypxfrd" => 600100069 ,
|
|
|
+);
|
|
|
+
|
|
|
+# -v means verbose, -v-v means verbose twice = print above hash
|
|
|
+if (defined $verbose && ($verbose > 1) ){
|
|
|
+ my $key;
|
|
|
+ print "Supported programs:\n";
|
|
|
+ print " name\t=>\tnumber\n";
|
|
|
+ print " ===============================\n";
|
|
|
+ foreach $key (sort keys %prognum) {
|
|
|
+ print " $key \t=>\t$prognum{$key} \n";
|
|
|
+ }
|
|
|
+ print "\n\n";
|
|
|
+ print_usage();
|
|
|
+ exit $ERRORS{'OK'};
|
|
|
+}
|
|
|
|
|
|
# -H means host name
|
|
|
-$opt_H = shift unless ($opt_H);
|
|
|
-unless ($opt_H) { print_usage(); exit -1; }
|
|
|
-if($opt_H && $opt_H =~ m/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[a-zA-Z][-a-zA-Z0-9]+(\.[a-zA-Z][-a-zA-Z0-9]+)*)$/) {
|
|
|
- $host = $1;
|
|
|
-} else {
|
|
|
- print "$opt_H is not a valid host name\n";
|
|
|
- exit -1;
|
|
|
+unless ($opt_H) { print_usage(); exit $ERRORS{'UNKNOWN'}; }
|
|
|
+
|
|
|
+if (! utils::is_hostname($opt_H)){
|
|
|
+ print "$opt_H is not a valid host name\n";
|
|
|
+ print_usage();
|
|
|
+ exit $ERRORS{"UNKNOWN"};
|
|
|
+}else{
|
|
|
+ $host = $opt_H;
|
|
|
}
|
|
|
|
|
|
-while (<DATA>) {
|
|
|
- ($a,$b) = split;
|
|
|
- $prognum{$a} = $b;
|
|
|
+if ($opt_t && $opt_u) {
|
|
|
+ print "Cannot define tcp AND udp\n";
|
|
|
+ print_usage();
|
|
|
+ exit $ERRORS{'UNKNOWN'};
|
|
|
}
|
|
|
-close DATA;
|
|
|
+
|
|
|
|
|
|
# -C means command name or number
|
|
|
$opt_C = shift unless ($opt_C);
|
|
|
unless ($opt_C) { print_usage(); exit -1; }
|
|
|
@progkeys = keys %prognum;
|
|
|
if ($opt_C =~ m/^([0-9]+)$/){
|
|
|
- $response = "RPC ok: program $opt_p (version ";
|
|
|
+# $response = "RPC ok: program $opt_C (version ";
|
|
|
$prognum = $1;
|
|
|
} elsif ( in( \@progkeys, $opt_C)) {
|
|
|
- $response = "RPC ok: $opt_C (version ";
|
|
|
+# $response = "RPC ok: $opt_C (version ";
|
|
|
$prognum = $prognum{$opt_C};
|
|
|
} else {
|
|
|
print "Program $opt_C is not defined\n";
|
|
|
- exit -1;
|
|
|
+ exit $ERRORS{'UNKNOWN'};
|
|
|
}
|
|
|
|
|
|
# -p means port number
|
|
|
@@ -99,42 +251,115 @@ if($opt_p =~ /^([0-9]+)$/){
|
|
|
|
|
|
$proto = 'u';
|
|
|
$proto = $proto[$prognum] if ($proto[$prognum]);
|
|
|
-$cmd = "/usr/sbin/rpcinfo $port -" . "$proto $host $prognum 2>&1 |";
|
|
|
-print "$cmd\n" if ($verbose);
|
|
|
-open CMD, $cmd;
|
|
|
-
|
|
|
-while ( <CMD> ) {
|
|
|
- chomp;
|
|
|
- if ( /program $prognum version ([0-9]*) ready and waiting/ ) {
|
|
|
- $response .= "$1) is running";
|
|
|
- print "$response\n";
|
|
|
- exit 0;
|
|
|
- }
|
|
|
+$proto = 't' if ($opt_t);
|
|
|
+$proto = 'u' if ($opt_u);
|
|
|
+
|
|
|
+
|
|
|
+# Just in case of problems, let's not hang Nagios
|
|
|
+$SIG{'ALRM'} = sub {
|
|
|
+ print ("ERROR: No response from RPC server (alarm)\n");
|
|
|
+ exit $ERRORS{"UNKNOWN"};
|
|
|
+};
|
|
|
+alarm($TIMEOUT);
|
|
|
+
|
|
|
+# -c is progver - if we need to check multiple specified versions.
|
|
|
+if (defined $opt_c ) {
|
|
|
+ my $vers;
|
|
|
+ @progvers = split(/,/ ,$opt_c );
|
|
|
+ foreach $vers (sort @progvers) {
|
|
|
+ if($vers =~ /^([0-9]+)$/){
|
|
|
+ $progver = "$1";
|
|
|
+ print "Checking $opt_C version $progver proto $proto\n" if $verbose;
|
|
|
+ get_rpcinfo();
|
|
|
+ }else{
|
|
|
+ print "Version $vers is not an integer\n" if $verbose;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}else{
|
|
|
+ get_rpcinfo();
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+## translate proto for output
|
|
|
+if ($proto eq "u" ){
|
|
|
+ $proto = "udp";
|
|
|
+}else{
|
|
|
+ $proto = "tcp";
|
|
|
+}
|
|
|
+
|
|
|
+if ($state eq 'OK') {
|
|
|
+ print "$state: RPC program $opt_C".$response." $proto running\n";
|
|
|
+}else{
|
|
|
+ if($response){
|
|
|
+ print "$state: RPC program $opt_C".$response2." $proto is not running,".$response." $proto is running\n";
|
|
|
+ }else{
|
|
|
+ print "$state: RPC program $opt_C $response2 $proto is not running\n";
|
|
|
+ }
|
|
|
}
|
|
|
+exit $ERRORS{$state};
|
|
|
|
|
|
-print "RPC CRITICAL: Program $opt_C not registered\n";
|
|
|
-exit 2;
|
|
|
|
|
|
+######## Subroutines ==========================
|
|
|
+
|
|
|
+sub get_rpcinfo {
|
|
|
+ $cmd = "$utils::PATH_TO_RPCINFO $port -" . "$proto $host $prognum $progver 2>&1 |";
|
|
|
+ print "$cmd\n" if ($verbose);
|
|
|
+ open CMD, $cmd or die "Can't fork for rpcinfo: $!\n" ;
|
|
|
+
|
|
|
+ while ( $line = <CMD> ) {
|
|
|
+ printf "$line " if $verbose;
|
|
|
+ chomp $line;
|
|
|
+
|
|
|
+ if ( $line =~ /program $prognum version ([0-9]*) ready and waiting/ ) {
|
|
|
+ $response .= " version $1";
|
|
|
+ $state = 'OK' unless $state ne 'OK';
|
|
|
+ print "1:$response \n" if $verbose;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ( $line =~ /program $prognum version ([0-9]*) is not available/ ) {
|
|
|
+ $response2 .= " version $1";
|
|
|
+ $state = 'CRITICAL';
|
|
|
+ print "2:$response2 \n" if $verbose;
|
|
|
+ }
|
|
|
+ if ( $line =~ /program $prognum is not available/ ) {
|
|
|
+ $response3 = "";
|
|
|
+ $response3 = "tcp" if $opt_t;
|
|
|
+ $response3 = "udp" if $opt_u;
|
|
|
+ $state = 'CRITICAL';
|
|
|
+ print "3:$response3 \n" if $verbose;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ close CMD;
|
|
|
+}
|
|
|
|
|
|
|
|
|
sub print_help() {
|
|
|
print_revision($PROGNAME,'$Revision$ ');
|
|
|
- print "Copyright (c) 2000 Karl DeBisschop/Truongchinh Nguyen\n";
|
|
|
+ print "Copyright (c) 2002 Karl DeBisschop/Truongchinh Nguyen/Subhendu Ghosh\n";
|
|
|
print "\n";
|
|
|
print "Check if a rpc service is registered and running using\n";
|
|
|
- print " rpcinfo -<protocol> <host> <program number>\n";
|
|
|
+ print " rpcinfo -H host -C rpc_command \n";
|
|
|
print "\n";
|
|
|
print_usage();
|
|
|
print "\n";
|
|
|
- print "<host> The server providing the rpc service\n";
|
|
|
- print "<program> The program name (or number).\n\n";
|
|
|
+ print " <host> The server providing the rpc service\n";
|
|
|
+ print " <rpc_command> The program name (or number).\n";
|
|
|
+ print " <program_version> The version you want to check for (one or more)\n";
|
|
|
+ print " Should prevent checks of unknown versions being syslogged\n";
|
|
|
+ print " e.g. 2,3,6 to check v2, v3, and v6\n";
|
|
|
+ print " [-u | -t] Test UDP or TCP\n";
|
|
|
+ print " [-v] Verbose \n";
|
|
|
+ print " [-v -v] Verbose - will print supported programs and numbers \n";
|
|
|
+ print "\n";
|
|
|
support();
|
|
|
}
|
|
|
|
|
|
sub print_usage () {
|
|
|
- print "$PROGNAME -H host -C rpc_command [-p port]\n";
|
|
|
- print "$PROGNAME [-h | --help]\n";
|
|
|
- print "$PROGNAME [-V | --version]\n";
|
|
|
+ print "Usage: \n";
|
|
|
+ print " $PROGNAME -H host -C rpc_command [-p port] [-c program_version] [-u|-t] [-v]\n";
|
|
|
+ print " $PROGNAME [-h | --help]\n";
|
|
|
+ print " $PROGNAME [-V | --version]\n";
|
|
|
}
|
|
|
|
|
|
sub in ($$) {
|
|
|
@@ -149,122 +374,3 @@ sub in ($$) {
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-__DATA__
|
|
|
-portmapper 100000
|
|
|
-portmap 100000
|
|
|
-sunrpc 100000
|
|
|
-rpcbind 100000
|
|
|
-rstatd 100001
|
|
|
-rstat 100001
|
|
|
-rup 100001
|
|
|
-perfmeter 100001
|
|
|
-rstat_svc 100001
|
|
|
-rusersd 100002
|
|
|
-rusers 100002
|
|
|
-nfs 100003
|
|
|
-nfsprog 100003
|
|
|
-ypserv 100004
|
|
|
-ypprog 100004
|
|
|
-mountd 100005
|
|
|
-mount 100005
|
|
|
-showmount 100005
|
|
|
-ypbind 100007
|
|
|
-walld 100008
|
|
|
-rwall 100008
|
|
|
-shutdown 100008
|
|
|
-yppasswdd 100009
|
|
|
-yppasswd 100009
|
|
|
-etherstatd 100010
|
|
|
-etherstat 100010
|
|
|
-rquotad 100011
|
|
|
-rquotaprog 100011
|
|
|
-quota 100011
|
|
|
-rquota 100011
|
|
|
-sprayd 100012
|
|
|
-spray 100012
|
|
|
-3270_mapper 100013
|
|
|
-rje_mapper 100014
|
|
|
-selection_svc 100015
|
|
|
-selnsvc 100015
|
|
|
-database_svc 100016
|
|
|
-rexd 100017
|
|
|
-rex 100017
|
|
|
-alis 100018
|
|
|
-sched 100019
|
|
|
-llockmgr 100020
|
|
|
-nlockmgr 100021
|
|
|
-x25_inr 100022
|
|
|
-statmon 100023
|
|
|
-status 100024
|
|
|
-bootparam 100026
|
|
|
-ypupdated 100028
|
|
|
-ypupdate 100028
|
|
|
-keyserv 100029
|
|
|
-keyserver 100029
|
|
|
-sunlink_mapper 100033
|
|
|
-tfsd 100037
|
|
|
-nsed 100038
|
|
|
-nsemntd 100039
|
|
|
-showfhd 100043
|
|
|
-showfh 100043
|
|
|
-ioadmd 100055
|
|
|
-rpc.ioadmd 100055
|
|
|
-NETlicense 100062
|
|
|
-sunisamd 100065
|
|
|
-debug_svc 100066
|
|
|
-dbsrv 100066
|
|
|
-ypxfrd 100069
|
|
|
-rpc.ypxfrd 100069
|
|
|
-bugtraqd 100071
|
|
|
-kerbd 100078
|
|
|
-event 100101
|
|
|
-na.event 100101
|
|
|
-logger 100102
|
|
|
-na.logger 100102
|
|
|
-sync 100104
|
|
|
-na.sync 100104
|
|
|
-hostperf 100107
|
|
|
-na.hostperf 100107
|
|
|
-activity 100109
|
|
|
-na.activity 100109
|
|
|
-hostmem 100112
|
|
|
-na.hostmem 100112
|
|
|
-sample 100113
|
|
|
-na.sample 100113
|
|
|
-x25 100114
|
|
|
-na.x25 100114
|
|
|
-ping 100115
|
|
|
-na.ping 100115
|
|
|
-rpcnfs 100116
|
|
|
-na.rpcnfs 100116
|
|
|
-hostif 100117
|
|
|
-na.hostif 100117
|
|
|
-etherif 100118
|
|
|
-na.etherif 100118
|
|
|
-iproutes 100120
|
|
|
-na.iproutes 100120
|
|
|
-layers 100121
|
|
|
-na.layers 100121
|
|
|
-snmp 100122
|
|
|
-na.snmp 100122
|
|
|
-snmp-cmc 100122
|
|
|
-snmp-synoptics 100122
|
|
|
-snmp-unisys 100122
|
|
|
-snmp-utk 100122
|
|
|
-traffic 100123
|
|
|
-na.traffic 100123
|
|
|
-nfs_acl 100227
|
|
|
-sadmind 100232
|
|
|
-nisd 100300
|
|
|
-rpc.nisd 100300
|
|
|
-nispasswd 100303
|
|
|
-rpc.nispasswdd 100303
|
|
|
-ufsd 100233
|
|
|
-ufsd 100233
|
|
|
-pcnfsd 150001
|
|
|
-pcnfs 150001
|
|
|
-amd 300019
|
|
|
-amq 300019
|
|
|
-bwnfsd 545580417
|
|
|
-fypxfrd 600100069
|
|
|
-freebsd-ypxfrd 600100069
|