fping.
A tool to quickly ping N number of hosts to determine their reachability without flooding the network.
This commit is contained in:
parent
a1eb8868e4
commit
40b57f5443
35
net/fping/Makefile
Normal file
35
net/fping/Makefile
Normal file
@ -0,0 +1,35 @@
|
||||
# $FreeBSD: ports/net/fping/Makefile,v 1.8 2000/03/22 00:26:51 obrien Exp $
|
||||
# $OpenBSD: Makefile,v 1.1.1.1 2000/03/24 11:02:35 form Exp $
|
||||
|
||||
DISTNAME= part01
|
||||
PKGNAME= fping-1.20
|
||||
CATEGORIES= net
|
||||
MASTER_SITES= ftp://ftp.uu.net/usenet/comp.sources.unix/volume26/fping/ \
|
||||
ftp://ftp.digital.com/pub/usenet/comp.sources.unix/volume26/fping/ \
|
||||
ftp://ftp.wustl.edu/usenet/comp.sources.unix/volume26/fping/ \
|
||||
ftp://ftp.isnet.is/pub/Usenet/Usenet.src/comp.sources.unix/v26/fping/
|
||||
|
||||
EXTRACT_SUFX= .Z
|
||||
EXTRACT_CMD= zcat
|
||||
EXTRACT_BEFORE_ARGS=
|
||||
EXTRACT_AFTER_ARGS= | sed -e '1,/Archive-Name/d' | sh
|
||||
|
||||
PERMIT_PACKAGE_CDROM= Yes
|
||||
PERMIT_PACKAGE_FTP= Yes
|
||||
PERMIT_DISTFILES_CDROM= Yes
|
||||
PERMIT_DISTFILES_FTP= Yes
|
||||
|
||||
FAKE= Yes
|
||||
|
||||
MAINTAINER= form@openbsd.org
|
||||
|
||||
DIST_SUBDIR= fping
|
||||
WRKDIST= ${WRKDIR}
|
||||
|
||||
do-install:
|
||||
${INSTALL_PROGRAM} ${WRKBUILD}/fping ${PREFIX}/sbin
|
||||
${INSTALL_MAN} ${WRKBUILD}/fping.man ${PREFIX}/man/man8/fping.8
|
||||
${INSTALL_MAN_DIR} ${PREFIX}/share/doc/fping
|
||||
${INSTALL_MAN} ${WRKBUILD}/README* ${PREFIX}/share/doc/fping
|
||||
|
||||
.include <bsd.port.mk>
|
3
net/fping/files/md5
Normal file
3
net/fping/files/md5
Normal file
@ -0,0 +1,3 @@
|
||||
MD5 (fping/part01.Z) = b472b9936f814051370f5cada5e3ab0a
|
||||
RMD160 (fping/part01.Z) = 2b8a59054d0e377c35800595cf0e27bd73181cc4
|
||||
SHA1 (fping/part01.Z) = 5da77db8996539095e4da7b253f0f80b6f3896bc
|
119
net/fping/patches/patch-fping-c
Normal file
119
net/fping/patches/patch-fping-c
Normal file
@ -0,0 +1,119 @@
|
||||
# $OpenBSD: patch-fping-c,v 1.1.1.1 2000/03/24 11:02:35 form Exp $
|
||||
|
||||
--- fping.c.orig Mon Sep 20 13:10:23 1999
|
||||
+++ fping.c Mon Sep 20 13:15:05 1999
|
||||
@@ -185,7 +185,9 @@
|
||||
|
||||
extern char *optarg;
|
||||
extern int optind,opterr;
|
||||
+#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__)
|
||||
extern char *sys_errlist[];
|
||||
+#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -234,9 +236,9 @@
|
||||
int timeout = DEFAULT_TIMEOUT;
|
||||
int interval = DEFAULT_INTERVAL;
|
||||
|
||||
-long max_reply=0;
|
||||
-long min_reply=10000;
|
||||
-int total_replies=0;
|
||||
+long max_reply=0; /* usec */
|
||||
+long min_reply=10000; /* usec */
|
||||
+int total_replies=0; /* usec */
|
||||
double sum_replies=0;
|
||||
|
||||
struct timeval timeout_timeval;
|
||||
@@ -385,6 +387,7 @@
|
||||
}
|
||||
if (!ping_file) errno_crash_and_burn("fopen");
|
||||
while(fgets(line,132,ping_file)) {
|
||||
+ line[132-1] = '\0';
|
||||
sscanf(line,"%s",host);
|
||||
if ((!*host) || (host[0]=='#')) /* magic to avoid comments */
|
||||
continue;
|
||||
@@ -411,8 +414,8 @@
|
||||
cursor=cursor->next;
|
||||
}
|
||||
|
||||
- gettimeofday(&start_time,&tz);
|
||||
cursor=rrlist;
|
||||
+ gettimeofday(&start_time,&tz);
|
||||
while (num_waiting) { /* while pings are outstanding */
|
||||
if ( (timeval_diff(¤t_time,&cursor->last_time)> timeout) ||
|
||||
cursor->num_packets_sent==0) {
|
||||
@@ -455,11 +458,11 @@
|
||||
min_reply=0; max_reply=0; total_replies=1; sum_replies=0;
|
||||
}
|
||||
|
||||
- fprintf(stderr," %8d msec (min round trip time)\n",min_reply);
|
||||
- fprintf(stderr," %8d msec (avg round trip time)\n",(int)sum_replies/total_replies);
|
||||
- fprintf(stderr," %8d msec (max round trip time)\n",max_reply);
|
||||
+ fprintf(stderr," %8.3f msec (min round trip time)\n",min_reply/1000.0);
|
||||
+ fprintf(stderr," %8.3f msec (avg round trip time)\n",sum_replies/total_replies/1000.0);
|
||||
+ fprintf(stderr," %8.3f msec (max round trip time)\n",max_reply/1000.0);
|
||||
fprintf(stderr," %8.3f sec (elapsed real time)\n",
|
||||
- timeval_diff( &end_time,&start_time)/1000.0);
|
||||
+ timeval_diff( &end_time,&start_time)/1000000.0);
|
||||
fprintf(stderr,"\n");
|
||||
|
||||
}
|
||||
@@ -493,8 +496,6 @@
|
||||
struct icmp *icp = (struct icmp *) buffer;
|
||||
int n,len;
|
||||
|
||||
- gettimeofday(&h->last_time,&tz);
|
||||
-
|
||||
icp->icmp_type = ICMP_ECHO;
|
||||
icp->icmp_code = 0;
|
||||
icp->icmp_cksum = 0;
|
||||
@@ -504,12 +505,15 @@
|
||||
#define SIZE_PACK_SENT (sizeof(h->num_packets_sent))
|
||||
#define SIZE_LAST_TIME (sizeof(h->last_time))
|
||||
|
||||
- bcopy(&h->last_time,&buffer[SIZE_ICMP_HDR],SIZE_LAST_TIME);
|
||||
bcopy(&h->num_packets_sent,
|
||||
&buffer[SIZE_ICMP_HDR+SIZE_LAST_TIME], SIZE_PACK_SENT);
|
||||
|
||||
len = SIZE_ICMP_HDR+SIZE_LAST_TIME+SIZE_PACK_SENT;
|
||||
|
||||
+ /* set the time at the very last possible point */
|
||||
+ gettimeofday(&h->last_time,&tz);
|
||||
+ bcopy(&h->last_time,&buffer[SIZE_ICMP_HDR],SIZE_LAST_TIME);
|
||||
+
|
||||
icp->icmp_cksum = in_cksum( (u_short *)icp, len );
|
||||
|
||||
n = sendto( s, buffer, len, 0, (struct sockaddr *)&h->saddr,
|
||||
@@ -578,10 +582,12 @@
|
||||
return 1; /* packet received, don't about it anymore */
|
||||
}
|
||||
|
||||
+ /* get time of receipt as close to the real time as possible */
|
||||
+ gettimeofday(¤t_time,&tz);
|
||||
+
|
||||
n=icp->icmp_seq;
|
||||
h=table[n];
|
||||
|
||||
- gettimeofday(¤t_time,&tz);
|
||||
bcopy(&icp->icmp_data[0],&sent_time,sizeof(sent_time));
|
||||
bcopy(&icp->icmp_data[SIZE_LAST_TIME],&the_index, sizeof(the_index));
|
||||
this_reply = timeval_diff(¤t_time,&sent_time);
|
||||
@@ -594,7 +600,7 @@
|
||||
if (dns_flag) printf("%s",get_host_by_address(response_addr.sin_addr));
|
||||
else printf("%s",h->host);
|
||||
if (verbose_flag) printf(" is alive");
|
||||
- if (elapsed_flag) printf(" (%d msec)",this_reply);
|
||||
+ if (elapsed_flag) printf(" (%.3f msec)",this_reply/1000.0);
|
||||
printf("\n");
|
||||
}
|
||||
num_alive++;
|
||||
@@ -756,7 +762,7 @@
|
||||
|
||||
temp =
|
||||
(((a->tv_sec*1000000)+ a->tv_usec) -
|
||||
- ((b->tv_sec*1000000)+ b->tv_usec))/1000;
|
||||
+ ((b->tv_sec*1000000)+ b->tv_usec));
|
||||
|
||||
return (long) temp;
|
||||
|
54
net/fping/patches/patch-fping-man
Normal file
54
net/fping/patches/patch-fping-man
Normal file
@ -0,0 +1,54 @@
|
||||
# $OpenBSD: patch-fping-man,v 1.1.1.1 2000/03/24 11:02:35 form Exp $
|
||||
|
||||
--- fping.man.orig Sat Jan 22 15:46:58 2000
|
||||
+++ fping.man Sat Jan 22 15:47:38 2000
|
||||
@@ -1,4 +1,4 @@
|
||||
-.TH fping l
|
||||
+.TH fping 8
|
||||
.SH NAME
|
||||
fping \- send ICMP ECHO_REQUEST packets to network hosts
|
||||
.SH SYNOPSIS
|
||||
@@ -45,7 +45,7 @@
|
||||
.IP \fB-f\fR 5
|
||||
Read list of system from a file.
|
||||
.IP \fB-i\fIn\fR 5
|
||||
-The minimum amount of time (in milliseconds) between sending a ping packet to any host (default is 25).
|
||||
+The minimum amount of time (in microseconds) between sending a ping packet to any host (default is 25).
|
||||
.IP \fB-q\fR 5
|
||||
Quiet. Don't show per host results, just set final exit status.
|
||||
.IP \fB-r\fIn\fR 5
|
||||
@@ -54,8 +54,8 @@
|
||||
.IP \fB-s\fR 5
|
||||
Dump final statistics.
|
||||
.IP \fB-t\fIn\fR 5
|
||||
-Individual host timeout in milliseconds (default 2500). This is the
|
||||
-minimum number of milliseconds between ping packets directed towards a given
|
||||
+Individual host timeout in microseconds (default 2500). This is the
|
||||
+minimum number of microseconds between ping packets directed towards a given
|
||||
host.
|
||||
.IP \fB-u\fR 5
|
||||
Show systems that are unreachable.
|
||||
@@ -70,12 +70,12 @@
|
||||
example none the less.
|
||||
.nf
|
||||
|
||||
-#!/usr/local/bin/perl
|
||||
+#!/usr/bin/perl
|
||||
require 'open2.pl';
|
||||
|
||||
$MAILTO = "root";
|
||||
|
||||
-$pid = &open2("OUTPUT","INPUT","/usr/local/bin/fping -u");
|
||||
+$pid = &open2("OUTPUT","INPUT","/usr/local/sbin/fping -u");
|
||||
|
||||
@check=("slapshot","foo","foobar");
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
that are currently reachable.
|
||||
.nf
|
||||
|
||||
-#!/usr/local/bin/perl
|
||||
+#!/usr/bin/perl
|
||||
|
||||
$hosts_to_backup = `cat /etc/hosts.backup | fping -a`;
|
||||
|
1
net/fping/pkg/COMMENT
Normal file
1
net/fping/pkg/COMMENT
Normal file
@ -0,0 +1 @@
|
||||
quickly ping N hosts w/o flooding the network
|
14
net/fping/pkg/DESCR
Normal file
14
net/fping/pkg/DESCR
Normal file
@ -0,0 +1,14 @@
|
||||
A tool to quickly ping N number of hosts to determine their reachability
|
||||
without flooding the network.
|
||||
|
||||
fping is different from ping in that you can specify any number of
|
||||
hosts on the command line, or specify a file containing the lists
|
||||
of hosts to ping. Instead of trying one host until it timeouts or
|
||||
replies, fping will send out a ping packet and move on to the next
|
||||
host in a round-robin fashion. If a host replies, it is noted and
|
||||
removed from the list of hosts to check. If a host does not respond
|
||||
within a certain time limit and/or retry limit it will be considered
|
||||
unreachable.
|
||||
|
||||
Unlike ping, fping is meant to be used in scripts and its
|
||||
output is easy to parse.
|
5
net/fping/pkg/PLIST
Normal file
5
net/fping/pkg/PLIST
Normal file
@ -0,0 +1,5 @@
|
||||
man/man8/fping.8
|
||||
sbin/fping
|
||||
share/doc/fping/README
|
||||
share/doc/fping/README.VMS
|
||||
@dirrm share/doc/fping
|
Loading…
Reference in New Issue
Block a user